Browse Source

Renamed Perspex -> Avalonia

pull/534/head
Steven Kirk 10 years ago
parent
commit
5be41985c3
  1. 16
      .gitmodules
  2. 1888
      Avalonia.sln
  3. 0
      Avalonia.sln.DotSettings
  4. 0
      Avalonia.v2.ncrunchsolution
  5. 1888
      Perspex.sln
  6. 6
      appveyor.yml
  7. 4
      docs/README.md
  8. 44
      docs/docfx.json
  9. 22
      docs/guidelines/build.md
  10. 6
      docs/guidelines/contributing.md
  11. 2
      docs/guidelines/toc.yml
  12. 0
      docs/images/avalonia-video.png
  13. 14
      docs/index.md
  14. 28
      docs/intro.md
  15. 46
      docs/spec/architecture.md
  16. 34
      docs/spec/defining-properties.md
  17. 12
      docs/spec/logging.md
  18. 8
      docs/spec/styles.md
  19. 4
      docs/spec/toc.yml
  20. 8
      docs/spec/working-with-properties.md
  21. 4
      docs/template/partials/footer.tmpl.partial
  22. 40
      docs/tutorial/from-wpf.md
  23. 8
      docs/tutorial/gettingstarted.md
  24. 2
      nuget/.gitignore
  25. 2
      nuget/build-appveyor.ps1
  26. 94
      nuget/build-version.ps1
  27. 2
      nuget/include.ps1
  28. 27
      nuget/template/Avalonia.Android.nuspec
  29. 30
      nuget/template/Avalonia.Desktop.nuspec
  30. 20
      nuget/template/Avalonia.Skia.Desktop.nuspec
  31. 27
      nuget/template/Avalonia.iOS.nuspec
  32. 26
      nuget/template/Avalonia.nuspec
  33. 27
      nuget/template/Perspex.Android.nuspec
  34. 30
      nuget/template/Perspex.Desktop.nuspec
  35. 20
      nuget/template/Perspex.Skia.Desktop.nuspec
  36. 27
      nuget/template/Perspex.iOS.nuspec
  37. 26
      nuget/template/Perspex.nuspec
  38. 24
      readme.md
  39. 6
      samples/BindingTest/App.xaml
  40. 12
      samples/BindingTest/App.xaml.cs
  41. 70
      samples/BindingTest/BindingTest.csproj
  42. 2
      samples/BindingTest/MainWindow.xaml
  43. 8
      samples/BindingTest/MainWindow.xaml.cs
  44. 2
      samples/BindingTest/Properties/AssemblyInfo.cs
  45. 2
      samples/BindingTest/TestItemView.xaml
  46. 6
      samples/BindingTest/TestItemView.xaml.cs
  47. 2
      samples/BindingTest/ViewModels/MainWindowViewModel.cs
  48. 2
      samples/BindingTest/ViewModels/TestItem.cs
  49. 50
      samples/ControlCatalog.Desktop/ControlCatalog.Desktop.csproj
  50. 6
      samples/ControlCatalog.Desktop/Program.cs
  51. 2
      samples/ControlCatalog.Desktop/Properties/AssemblyInfo.cs
  52. 4
      samples/ControlCatalog.iOS/AppDelegate.cs
  53. 62
      samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj
  54. 2
      samples/ControlCatalog.iOS/Main.cs
  55. 2
      samples/ControlCatalog.iOS/Properties/AssemblyInfo.cs
  56. 2
      samples/ControlCatalog.iOS/Resources/LaunchScreen.xib
  57. 6
      samples/ControlCatalog/App.xaml
  58. 2
      samples/ControlCatalog/App.xaml.cs
  59. 58
      samples/ControlCatalog/ControlCatalog.csproj
  60. 4
      samples/ControlCatalog/MainWindow.xaml
  61. 8
      samples/ControlCatalog/MainWindow.xaml.cs
  62. 2
      samples/ControlCatalog/Pages/BorderPage.xaml
  63. 6
      samples/ControlCatalog/Pages/BorderPage.xaml.cs
  64. 2
      samples/ControlCatalog/Pages/ButtonPage.xaml
  65. 6
      samples/ControlCatalog/Pages/ButtonPage.xaml.cs
  66. 2
      samples/ControlCatalog/Pages/CanvasPage.xaml
  67. 6
      samples/ControlCatalog/Pages/CanvasPage.xaml.cs
  68. 2
      samples/ControlCatalog/Pages/CarouselPage.xaml
  69. 10
      samples/ControlCatalog/Pages/CarouselPage.xaml.cs
  70. 2
      samples/ControlCatalog/Pages/CheckBoxPage.xaml
  71. 6
      samples/ControlCatalog/Pages/CheckBoxPage.xaml.cs
  72. 2
      samples/ControlCatalog/Pages/DropDownPage.xaml
  73. 6
      samples/ControlCatalog/Pages/DropDownPage.xaml.cs
  74. 2
      samples/ControlCatalog/Pages/ExpanderPage.xaml
  75. 6
      samples/ControlCatalog/Pages/ExpanderPage.xaml.cs
  76. 2
      samples/ControlCatalog/Pages/ImagePage.xaml
  77. 6
      samples/ControlCatalog/Pages/ImagePage.xaml.cs
  78. 2
      samples/ControlCatalog/Pages/LayoutTransformControlPage.xaml
  79. 6
      samples/ControlCatalog/Pages/LayoutTransformControlPage.xaml.cs
  80. 2
      samples/ControlCatalog/Pages/MenuPage.xaml
  81. 6
      samples/ControlCatalog/Pages/MenuPage.xaml.cs
  82. 2
      samples/ControlCatalog/Pages/RadioButtonPage.xaml
  83. 6
      samples/ControlCatalog/Pages/RadioButtonPage.xaml.cs
  84. 2
      samples/ControlCatalog/Pages/SliderPage.xaml
  85. 6
      samples/ControlCatalog/Pages/SliderPage.xaml.cs
  86. 2
      samples/ControlCatalog/Pages/TextBoxPage.xaml
  87. 6
      samples/ControlCatalog/Pages/TextBoxPage.xaml.cs
  88. 2
      samples/ControlCatalog/Pages/ToolTipPage.xaml
  89. 6
      samples/ControlCatalog/Pages/ToolTipPage.xaml.cs
  90. 4
      samples/ControlCatalog/Program.cs
  91. 2
      samples/ControlCatalog/Properties/AssemblyInfo.cs
  92. 2
      samples/ControlCatalog/SideBar.xaml
  93. 30
      samples/TestApplication/Program.cs
  94. 2
      samples/TestApplication/Properties/AssemblyInfo.cs
  95. 80
      samples/TestApplication/TestApplication.csproj
  96. 28
      samples/TestApplicationShared/App.cs
  97. 16
      samples/TestApplicationShared/GalleryStyle.cs
  98. 2
      samples/TestApplicationShared/Item.cs
  99. 52
      samples/TestApplicationShared/MainWindow.cs
  100. 6
      samples/TestApplicationShared/Node.cs

16
.gitmodules

@ -1,13 +1,13 @@
[submodule "src/Perspex.ReactiveUI/src"]
path = src/Perspex.ReactiveUI/src
[submodule "src/Avalonia.ReactiveUI/src"]
path = src/Avalonia.ReactiveUI/src
url = https://github.com/reactiveui/ReactiveUI.git
[submodule "src/Perspex.HtmlRenderer/external"]
path = src/Perspex.HtmlRenderer/external
[submodule "src/Avalonia.HtmlRenderer/external"]
path = src/Avalonia.HtmlRenderer/external
url = https://github.com/Perspex/HTML-Renderer.git
branch = perspex-pcl
[submodule "src/Markup/Perspex.Markup.Xaml/OmniXAML"]
path = src/Markup/Perspex.Markup.Xaml/OmniXAML
[submodule "src/Markup/Avalonia.Markup.Xaml/OmniXAML"]
path = src/Markup/Avalonia.Markup.Xaml/OmniXAML
url = https://github.com/Perspex/OmniXAML.git
[submodule "src/Markup/Perspex.Markup.Xaml/glass"]
path = src/Markup/Perspex.Markup.Xaml/glass
[submodule "src/Markup/Avalonia.Markup.Xaml/glass"]
path = src/Markup/Avalonia.Markup.Xaml/glass
url = https://github.com/SuperJMN/glass

1888
Avalonia.sln

File diff suppressed because it is too large

0
Perspex.sln.DotSettings → Avalonia.sln.DotSettings

0
Perspex.v2.ncrunchsolution → Avalonia.v2.ncrunchsolution

1888
Perspex.sln

File diff suppressed because it is too large

6
appveyor.yml

@ -2,7 +2,7 @@ version: 1.0.{build}
os: Visual Studio 2015
before_build:
- git submodule update --init
- nuget restore Perspex.sln
- nuget restore Avalonia.sln
environment:
myget_key:
@ -20,12 +20,12 @@ configuration:
- Release
after_test:
- .\packages\JetBrains.dotMemoryUnit.2.1.20150828.125449\tools\dotMemoryUnit.exe -targetExecutable="%xunit20%\xunit.console.x86.exe" -returnTargetExitCode --"tests\Perspex.LeakTests\bin\Release\Perspex.LeakTests.dll"
- .\packages\JetBrains.dotMemoryUnit.2.1.20150828.125449\tools\dotMemoryUnit.exe -targetExecutable="%xunit20%\xunit.console.x86.exe" -returnTargetExitCode --"tests\Avalonia.LeakTests\bin\Release\Avalonia.LeakTests.dll"
- ps: nuget\build-appveyor.ps1
artifacts:
- path: nuget\*.nupkg
build:
project: Perspex.sln
project: Avalonia.sln
verbosity: minimal

4
docs/README.md

@ -1,6 +1,6 @@
# Perspex Documentation
# Avalonia Documentation
* [API Reference](http://perspex.github.io/)
* [API Reference](http://avalonia.github.io/)
## Building

44
docs/docfx.json

@ -4,27 +4,27 @@
"src": [
{
"files": [
"/src/Gtk/Perspex.Cairo/Perspex.Cairo.csproj",
"/src/Gtk/Perspex.Gtk/Perspex.Gtk.csproj",
"/src/Markup/Perspex.Markup/Perspex.Markup.csproj",
"/src/Markup/Perspex.Markup.Xaml/Perspex.Markup.Xaml.csproj",
"/src/Perspex.Animation/Perspex.Animation.csproj",
"/src/Perspex.Application/Perspex.Application.csproj",
"/src/Perspex.Base/Perspex.Base.csproj",
"/src/Perspex.Controls/Perspex.Controls.csproj",
"/src/Perspex.Diagnostics/Perspex.Diagnostics.csproj",
"/src/Perspex.HtmlRenderer/Perspex.HtmlRenderer.csproj",
"/src/Perspex.Input/Perspex.Input.csproj",
"/src/Perspex.Interactivity/Perspex.Interactivity.csproj",
"/src/Perspex.Layout/Perspex.Layout.csproj",
"/src/Perspex.ReactiveUI/Perspex.ReactiveUI.csproj",
"/src/Perspex.SceneGraph/Perspex.SceneGraph.csproj",
"/src/Perspex.Styling/Perspex.Styling.csproj",
"/src/Perspex.Themes.Default/Perspex.Themes.Default.csproj",
"/src/Skia/Perspex.Skia.Desktop/Perspex.Skia.Desktop.csproj",
"/src/Windows/Perspex.Designer/Perspex.Designer.csproj",
"/src/Windows/Perspex.Direct2D1/Perspex.Direct2D1.csproj",
"/src/Windows/Perspex.Win32/Perspex.Win32.csproj",
"/src/Gtk/Avalonia.Cairo/Avalonia.Cairo.csproj",
"/src/Gtk/Avalonia.Gtk/Avalonia.Gtk.csproj",
"/src/Markup/Avalonia.Markup/Avalonia.Markup.csproj",
"/src/Markup/Avalonia.Markup.Xaml/Avalonia.Markup.Xaml.csproj",
"/src/Avalonia.Animation/Avalonia.Animation.csproj",
"/src/Avalonia.Application/Avalonia.Application.csproj",
"/src/Avalonia.Base/Avalonia.Base.csproj",
"/src/Avalonia.Controls/Avalonia.Controls.csproj",
"/src/Avalonia.Diagnostics/Avalonia.Diagnostics.csproj",
"/src/Avalonia.HtmlRenderer/Avalonia.HtmlRenderer.csproj",
"/src/Avalonia.Input/Avalonia.Input.csproj",
"/src/Avalonia.Interactivity/Avalonia.Interactivity.csproj",
"/src/Avalonia.Layout/Avalonia.Layout.csproj",
"/src/Avalonia.ReactiveUI/Avalonia.ReactiveUI.csproj",
"/src/Avalonia.SceneGraph/Avalonia.SceneGraph.csproj",
"/src/Avalonia.Styling/Avalonia.Styling.csproj",
"/src/Avalonia.Themes.Default/Avalonia.Themes.Default.csproj",
"/src/Skia/Avalonia.Skia.Desktop/Avalonia.Skia.Desktop.csproj",
"/src/Windows/Avalonia.Designer/Avalonia.Designer.csproj",
"/src/Windows/Avalonia.Direct2D1/Avalonia.Direct2D1.csproj",
"/src/Windows/Avalonia.Win32/Avalonia.Win32.csproj",
],
"exclude": [ "**/bin/**", "**/obj/**" ],
"cwd": ".."
@ -47,7 +47,7 @@
],
"overwrite": "apidoc/*.md",
"globalMetadata": {
"_appTitle": "Perspex Website"
"_appTitle": "Avalonia Website"
},
"dest": "_site",
"template": [ "default", "template"]

22
docs/guidelines/build.md

@ -1,21 +1,21 @@
# Building Perspex
# Building Avalonia
## Windows
Perspex requires Visual Studio 2015 to build on Windows.
Avalonia requires Visual Studio 2015 to build on Windows.
### Install GTK Sharp
To compile the full project under windows, you must have [gtk-sharp](http://www.mono-project.com/download/#download-win) installed. However, if you're
not interested in building the cross-platform bits you can simply unload these projects from Visual Studio:
- Perspex.Cairo
- Perspex.Cairo.RenderTests
- Perspex.Gtk
- Avalonia.Cairo
- Avalonia.Cairo.RenderTests
- Avalonia.Gtk
### Clone the Perspex repository
### Clone the Avalonia repository
git clone https://github.com/Perspex/Perspex.git
git clone https://github.com/AvaloniaUI/Avalonia.git
We currently need to build our own private version of ReactiveUI as it doesn't work on mono. This
is linked as a submodule in the git repository, so run:
@ -40,9 +40,9 @@ Then install the needed packages:
sudo apt-get install git mono-devel referenceassemblies-pcl monodevelop
### Clone the Perspex repository
### Clone the Avalonia repository
git clone https://github.com/Perspex/Perspex.git
git clone https://github.com/AvaloniaUI/Avalonia.git
We currently need to build our own private version of ReactiveUI as it doesn't work on mono. This
is linked as a submodule in the git repository, so run:
@ -53,11 +53,11 @@ The next step is to download the Skia native libraries. Run ```getnatives.sh```
### Load the Project in MonoDevelop
Start MonoDevelop and open the `Perspex.sln` solution. Wait for MonoDevelop to install the
Start MonoDevelop and open the `Avalonia.sln` solution. Wait for MonoDevelop to install the
project's NuGet packages.
Set the TestApplication project as the startup project and click Run.
There will be some compile errors in the tests, but ignore them for now.
You can track the Linux version's progress in the [Linux issue](https://github.com/Perspex/Perspex/issues/78).
You can track the Linux version's progress in the [Linux issue](https://github.com/AvaloniaUI/Avalonia/issues/78).

6
docs/guidelines/contributing.md

@ -2,7 +2,7 @@
## Before You Start ##
Drop into our [gitter chat room](https://gitter.im/Perspex/Perspex) and let us know what you're thinking of doing. We might be able to give you guidance or let you know if someone else is already working on the feature.
Drop into our [gitter chat room](https://gitter.im/Avalonia/Avalonia) and let us know what you're thinking of doing. We might be able to give you guidance or let you know if someone else is already working on the feature.
## Style ##
@ -46,9 +46,9 @@ There are two types of tests currently in the codebase; unit tests and render te
Unit tests should be contained in a class name that mirrors the class being tested with the suffix
-Tests, e.g.
Perspex.Controls.UnitTests.Presenters.TextPresenterTests
Avalonia.Controls.UnitTests.Presenters.TextPresenterTests
Where Perspex.Controls.UnitTests is the name of the project.
Where Avalonia.Controls.UnitTests is the name of the project.
Unit test methods should be named in a sentence style, separated by underscores, that describes in
English what the test is testing, e.g.

2
docs/guidelines/toc.yml

@ -1,4 +1,4 @@
- name: Building Perspex
- name: Building Avalonia
href: build.md
- name: Contributing
href: contributing.md

0
docs/images/perspex-video.png → docs/images/avalonia-video.png

Before

Width:  |  Height:  |  Size: 133 KiB

After

Width:  |  Height:  |  Size: 133 KiB

14
docs/index.md

@ -1,30 +1,30 @@
# The Perspex UI Framework
# The Avalonia UI Framework
Cross platform .NET UI Framework with bindings and XAML
## Current status
We're pleased to announce that Perspex is now in alpha!
We're pleased to announce that Avalonia is now in alpha!
What does alpha mean? Well, it means that it's now at a stage where you can have a play and hopefully create simple applications. There's now a Visual Studio Extension containing project and item templates that will help you get started, and there's an initial complement of controls. There's still a lot missing, and you will find bugs, and the API will change, but this represents the first time where we've made it somewhat easy to have a play and experiment with the framework.
## How do I try it out
The easiest way to try out Perspex is to install the [Visual Studio Extension](https://visualstudiogallery.msdn.microsoft.com/a4542e8a-b56c-4295-8df1-7e220178b873).
The easiest way to try out Avalonia is to install the [Visual Studio Extension](https://visualstudiogallery.msdn.microsoft.com/a4542e8a-b56c-4295-8df1-7e220178b873).
This will add a Perspex project template and a Window template to the standard Visual Studo "Add" dialog (yes, icons still to come :) ):
This will add a Avalonia project template and a Window template to the standard Visual Studo "Add" dialog (yes, icons still to come :) ):
![](images/add-dialogs.png)
Creating a Perspex Project will give you a simple project with a single XAML window. We even have a simple designer:
Creating a Avalonia Project will give you a simple project with a single XAML window. We even have a simple designer:
![](images/hello-world-xaml.png)
You can also find the project [on GitHub](https://github.com/Perspex/Perspex/)
You can also find the project [on GitHub](https://github.com/AvaloniaUI/Avalonia/)
## News
You can read news about Perspex on [Groky's blog](http://grokys.github.io/)
You can read news about Avalonia on [Groky's blog](http://grokys.github.io/)
## Cross Platform

28
docs/intro.md

@ -1,4 +1,4 @@
# Perspex #
# Avalonia #
...a next generation WPF?
@ -14,8 +14,8 @@ written for .NET 1 and barely updated to even bring it up-to-date with .NET 2 fe
generics.
So I began to think: what if we were to start anew with modern C# features such as *(gasp)*
Generics, Observables, async, etc etc. The result of that thought is Perspex
(https://github.com/grokys/Perspex).
Generics, Observables, async, etc etc. The result of that thought is Avalonia
(https://github.com/grokys/Avalonia).
##### DISCLAIMER
This is really **early development pre-alpha-alpha** stuff. Everything is subject to
@ -27,9 +27,9 @@ So what can it do so far? Not a whole lot right now. Here's the demo application
![](screen.png)
## PerspexProperty ##
## AvaloniaProperty ##
PerspexProperty is the equivalent of WPF's DependencyProperty.
AvaloniaProperty is the equivalent of WPF's DependencyProperty.
I'm not a big fan of DependencyProperty. My first thought was that I'd rather not have something
like this at all and just use basic INPC but DPs give you two important features: Inheritance and
@ -58,8 +58,8 @@ Eww! All that just to declare a single property. There's **A LOT** of boilerplat
generics and default parameters we can at least make it look a bit nicer:
```csharp
public static readonly PerspexProperty<PropertyType> PropertyDeclaration =
PerspexProperty.Register<OwnerClass, PropertyType>("PropertyName", inherits: true);
public static readonly AvaloniaProperty<PropertyType> PropertyDeclaration =
AvaloniaProperty.Register<OwnerClass, PropertyType>("PropertyName", inherits: true);
public PropertyType PropertyName
{
@ -70,7 +70,7 @@ public PropertyType PropertyName
What can we see here?
- PerspexProperties are typed, so no more having to cast in the getter.
- AvaloniaProperties are typed, so no more having to cast in the getter.
- We pass the property type and owner class as a generic type to `Register()` so we don't have to
write `typeof()` twice.
- We used default parameter values in `Register()` so that defaults don't have to be restated.
@ -79,13 +79,13 @@ write `typeof()` twice.
## Binding
Binding in Perspex uses Reactive Extensions' [IObservable](http://msdn.microsoft.com/library/dd990377.aspx). To bind an IObservable to a property, use the `Bind()` method:
Binding in Avalonia uses Reactive Extensions' [IObservable](http://msdn.microsoft.com/library/dd990377.aspx). To bind an IObservable to a property, use the `Bind()` method:
```csharp
control.Bind(BorderProperty, someObject.SomeObservable());
```
Note that because PerspexProperty is typed, we can check that the observable is of the correct type.
Note that because AvaloniaProperty is typed, we can check that the observable is of the correct type.
To get the value of a property as an observable, call `GetObservable()`:
@ -144,7 +144,7 @@ var control = new Control
## Visual and Logical trees
Perspex uses the same visual/logical tree separation that is used by WPF (and to some extent HTML
Avalonia uses the same visual/logical tree separation that is used by WPF (and to some extent HTML
is moving in this direction with the Shadow DOM). The manner of accessing the two trees is slightly
different however. Rather than using Visual/LogicalTreeHelper you can cast any control to an
`IVisual` or `ILogical` to reveal the tree operations. There's also the VisualExtensions class which
@ -156,7 +156,7 @@ property, which is determined by...
## Styles
Styles in Perspex diverge from styles in WPF quite a lot, and move towards a more CSS-like system.
Styles in Avalonia diverge from styles in WPF quite a lot, and move towards a more CSS-like system.
It's probably easiest to show in an example. Here is the default style for the CheckBox control:
```csharp
@ -215,11 +215,11 @@ different look-and-feel.
## XAML
As you can see, all of the examples here are defined in code - but a XAML implementation is being
worked on. The current progress can be reviewed at [https://github.com/SuperJMN/Perspex](https://github.com/SuperJMN/Perspex).
worked on. The current progress can be reviewed at [https://github.com/SuperJMN/Avalonia](https://github.com/SuperJMN/Avalonia).
## That's all for now
There's a lot more to see, and even more to do, so if you want to have a play you can get the code
here: [https://github.com/grokys/Perspex](https://github.com/grokys/Perspex)
here: [https://github.com/grokys/Avalonia](https://github.com/grokys/Avalonia)
Feedback is always welcome!

46
docs/spec/architecture.md

@ -1,6 +1,6 @@
# Perspex Architecture
# Avalonia Architecture
At the highest level, perspex is split up into a "core" and two "subsystems".
At the highest level, avalonia is split up into a "core" and two "subsystems".
* The core is a set of Portable Class Libraries that can run anywhere.
* The Windowing subsystem is responsible for creating windows, handling input and scheduling timers.
@ -10,37 +10,37 @@ There are currently two Windowing and two Rendering subsystems:
## Windowing Subsystems
* Perspex.Win32 uses the Win32 API (this also works on 64-bit windows).
* Perspex.Gtk uses the GTK2 toolkit and can be run on both Windows and *nix.
* Avalonia.Win32 uses the Win32 API (this also works on 64-bit windows).
* Avalonia.Gtk uses the GTK2 toolkit and can be run on both Windows and *nix.
## Rendering Subsystems
* Perspex.Direct2D1 uses Microsoft's Direct2D1 API.
* Perspex.Cairo uses Cairo for rendering and Pango for text layout.
* Avalonia.Direct2D1 uses Microsoft's Direct2D1 API.
* Avalonia.Cairo uses Cairo for rendering and Pango for text layout.
## Core
The Perspex core is split up into several assemblies. Note that they're not separated like this
The Avalonia core is split up into several assemblies. Note that they're not separated like this
because you will want to use them separately; they are separate to maintain separation of concerns
and a layered architecture. It is fully possible that they will be ILMerged into a single assembly
for distribution.
The assemblies are as follows, from lowest to highest level:
### Perspex.Base
### Avalonia.Base
The main classes in this assembly are `PerspexObject` and `PerspexProperty`.
The main classes in this assembly are `AvaloniaObject` and `AvaloniaProperty`.
These are Perspex's versions of XAML's `DependencyObject` and `DependencyProperty`. It also
defines a `PerspexDispatcher` which is - surprise - our version of XAML's `Dispatcher`.
These are Avalonia's versions of XAML's `DependencyObject` and `DependencyProperty`. It also
defines a `AvaloniaDispatcher` which is - surprise - our version of XAML's `Dispatcher`.
### Perspex.Animation
### Avalonia.Animation
The main class in the assembly is `Animatable`.
Allows PerspexProperties to be animated and provides various utilities related to animation.
Allows AvaloniaProperties to be animated and provides various utilities related to animation.
### Perspex.SceneGraph
### Avalonia.SceneGraph
The main class in this assembly is `Visual` and its interface `IVisual`.
@ -48,26 +48,26 @@ Defines the "Visual" layer which is a 2D scene graph, with each node being a `IV
Also defines primitives such as `Point`/`Rect`/`Matrix`, plus `Geometry`, `Bitmap`, `Brush` and
whatever else you might need in order to draw to the screen.
### Perspex.Styling
### Avalonia.Styling
The main interface in this assembly is `IStyleable`.
Defines a CSS-like system for styling controls.
### Perspex.Layout
### Avalonia.Layout
The main class in this assembly is `Layoutable`.
Defines a XAML-like layout system using `Measure` and `Arrange`. Also defines `LayoutManager` which
carries out the actual layout.
### Perspex.Interactivity
### Avalonia.Interactivity
The main class in this assembly is `Interactive`.
Defines a system of routed events similar to those found in XAML.
### Perspex.Input
### Avalonia.Input
The main class in this assembly is `InputElement`.
@ -76,7 +76,7 @@ Handles input from various devices such as `MouseDevice` and `KeyboardDevice`, t
`InputManager` in the form of "Raw" events which are then translated into routed events for the
controls.
### Perspex.Controls
### Avalonia.Controls
There are many important classes in this assembly, but the root of them is `Control`.
@ -84,18 +84,18 @@ Finally defines the actual controls. The `Control` class is analogous to WPF's `
whereas the `TemplatedControl` class is our version of WPF's `Control`. This is also where you'll
find all of the basic controls you'd expect.
### Perspex.Themes.Default
### Avalonia.Themes.Default
Defines a default theme using a set of styles and control templates.
### Perspex.Application
### Avalonia.Application
The main class in this assembly is `Application`.
This ties everything together, setting up the service locator, defining the default theme etc.
### Perspex.Diagnostics
### Avalonia.Diagnostics
Adds utilities for debugging perspex applications, such as `DevTools` which provides a Snoop/WPF
Adds utilities for debugging avalonia applications, such as `DevTools` which provides a Snoop/WPF
Inspector/Browser DevTools window for inspecting the state of the application.

34
docs/spec/defining-properties.md

@ -1,7 +1,7 @@
# Defining Properties
If you are creating a control, you will want to define properties on your
control. The process in Perspex is broadly similar to other XAML languages
control. The process in Avalonia is broadly similar to other XAML languages
with a few differences - the main one being that Perpsex's equivalent of
`DependencyProperty` is called `StyledProperty`.
@ -10,7 +10,7 @@ with a few differences - the main one being that Perpsex's equivalent of
A styled property is analogous to a `DependencyProperty` in other XAML
frameworks.
You register a styled property by calling `PerspexProperty.Register` and
You register a styled property by calling `AvaloniaProperty.Register` and
storing the result in a `static readonly` field. You then create a standard C#
property to access it.
@ -18,7 +18,7 @@ Here's how the `Border` control defines its `Background` property:
```c#
public static readonly StyledProperty<Brush> BackgroundProperty =
PerspexProperty.Register<Border, Brush>(nameof(Background));
AvaloniaProperty.Register<Border, Brush>(nameof(Background));
public Brush Background
{
@ -27,7 +27,7 @@ Here's how the `Border` control defines its `Background` property:
}
```
The `PerspexProperty.Register` method also accepts a number of other parameters:
The `AvaloniaProperty.Register` method also accepts a number of other parameters:
- `defaultValue`: This gives the property a default value. Be sure to only pass
value types and immutable types here as passing a reference type will cause the
@ -72,7 +72,7 @@ Here's how `Grid` defines its `Grid.Column` attached property:
```c#
public static readonly AttachedProperty<int> ColumnProperty =
PerspexProperty.RegisterAttached<Grid, Control, int>("Column");
AvaloniaProperty.RegisterAttached<Grid, Control, int>("Column");
public static int GetColumn(Control element)
{
@ -85,14 +85,14 @@ Here's how `Grid` defines its `Grid.Column` attached property:
}
```
## Readonly PerspexProperties
## Readonly AvaloniaProperties
To create a readonly property you use the `PerspexProperty.RegisterDirect`
To create a readonly property you use the `AvaloniaProperty.RegisterDirect`
method. Here is how `Visual` registers the readonly `Bounds` property:
```c#
public static readonly DirectProperty<Visual, Rect> BoundsProperty =
PerspexProperty.RegisterDirect<Visual, Rect>(
AvaloniaProperty.RegisterDirect<Visual, Rect>(
nameof(Bounds),
o => o.Bounds);
@ -110,13 +110,13 @@ registering the property, a getter is passed which is used to access the
property value through `GetValue` and then `SetAndRaise` is used to notify
listeners to changes to the property.
## Direct PerspexProperties
## Direct AvaloniaProperties
As its name suggests, `RegisterDirect` isn't just used for registering readonly
properties. You can also pass a *setter* to `RegisterDirect` to expose a
standard C# property as a Perspex property.
standard C# property as a Avalonia property.
A `StyledProperty` which is registered using `PerspexProperty.Register`
A `StyledProperty` which is registered using `AvaloniaProperty.Register`
maintains a prioritized list of values and bindings that allow styles to work.
However, this is overkill for many properties, such as `ItemsControl.Items` -
this will never be styled and the overhead involved with styled properties is
@ -126,12 +126,12 @@ Here is how `ItemsControl.Items` is registered:
```c#
public static readonly DirectProperty<ItemsControl, IEnumerable> ItemsProperty =
PerspexProperty.RegisterDirect<ItemsControl, IEnumerable>(
AvaloniaProperty.RegisterDirect<ItemsControl, IEnumerable>(
nameof(Items),
o => o.Items,
(o, v) => o.Items = v);
private IEnumerable _items = new PerspexList<object>();
private IEnumerable _items = new AvaloniaList<object>();
public IEnumerable Items
{
@ -144,8 +144,8 @@ Here is how `ItemsControl.Items` is registered:
Direct properties are a lightweight version of styled properties that support
the following:
- PerspexObject.GetValue
- PerspexObject.SetValue for non-readonly properties
- AvaloniaObject.GetValue
- AvaloniaObject.SetValue for non-readonly properties
- PropertyChanged
- Binding (only with LocalValue priority)
- GetObservable
@ -170,7 +170,7 @@ on the control, you must also add a field for the property:
o => o.Items,
(o, v) => o.Items = v);
private IEnumerable _items = new PerspexList<object>();
private IEnumerable _items = new AvaloniaList<object>();
public IEnumerable Items
{
@ -190,7 +190,7 @@ Pros:
Cons:
- Cannot inherit value from parent control
- Cannot take advantage of Perspex's styling system
- Cannot take advantage of Avalonia's styling system
- Property value is a field and as such is allocated whether the property is
set on the object or not

12
docs/spec/logging.md

@ -1,7 +1,7 @@
# Perspex Logging
# Avalonia Logging
Perspex uses [Serilog](https://github.com/serilog/serilog) for logging via
the Perspex.Logging.Serilog assembly.
Avalonia uses [Serilog](https://github.com/serilog/serilog) for logging via
the Avalonia.Logging.Serilog assembly.
The following method should be present in your App.xaml.cs file:
@ -24,7 +24,7 @@ for more information on the options here.
## Areas
Each Perspex log message has an "Area" that can be used to filter the log to
Each Avalonia log message has an "Area" that can be used to filter the log to
include only the type of events that you are interested in. These are currently:
- Property
@ -47,8 +47,8 @@ SerilogLogger.Initialize(new LoggerConfiguration()
## Removing Serilog
If you don't want a dependency on Serilog in your application, simply remove
the reference to Perspex.Logging.Serilog and the code that initializes it. If
the reference to Avalonia.Logging.Serilog and the code that initializes it. If
you do however still want some kinda of logging, there are two steps:
- Implement `Perspex.Logging.ILogSink`
- Implement `Avalonia.Logging.ILogSink`
- Assign your implementation to `Logger.Sink`

8
docs/spec/styles.md

@ -1,7 +1,7 @@
# Styling in Perspex
# Styling in Avalonia
The main difference between Perspex and existing XAML toolkits such as WPF and
UWP is in styling. Styling in Perspex uses a CSS-like system that aims to be
The main difference between Avalonia and existing XAML toolkits such as WPF and
UWP is in styling. Styling in Avalonia uses a CSS-like system that aims to be
more powerful and flexible than existing XAML styling systems. For convenience
for the rest of this document we'll refer to existing XAML toolkit's styling as
"WPF styling" as that's where it originated.
@ -50,7 +50,7 @@ As in CSS, controls can be given *style classes* which can be used in selectors:
</StackPanel>
Each control can be given 0 or more style classes. This is different to WPF
where only a single style can be applied to a control: in Perspex any number
where only a single style can be applied to a control: in Avalonia any number
of separate styles can be applied to a control. If more than one style affects
a particular property, the style closest to the control will take precedence.

4
docs/spec/toc.yml

@ -1,6 +1,6 @@
- name: Perspex Architecture
- name: Avalonia Architecture
href: architecture.md
- name: Styling in Perspex
- name: Styling in Avalonia
href: styles.md
- name: Defining Properties
href: defining-properties.md

8
docs/spec/working-with-properties.md

@ -1,6 +1,6 @@
# Working with Properties
Perspex controls expose their properties as standard CLR properties, so for
Avalonia controls expose their properties as standard CLR properties, so for
reading and writing values there's no surprises:
```c#
@ -77,9 +77,9 @@ The `GetObservable` method returns an observable that tracks changes to a
property on a single instance. However, if you're writing a control you may
want to implement an `OnPropertyChanged` method. In WPF this is done by passing
a static `PropertyChangedCallback` to the `DependencyProperty` registration
method, but in Perspex it's slightly different (and hopefully easier!)
method, but in Avalonia it's slightly different (and hopefully easier!)
The field which defines the property is derived from `PerspexProperty` and this
The field which defines the property is derived from `AvaloniaProperty` and this
has a `Changed` observable which is fired every time the property changes on
*any* object. In addition there is an `AddClassHandler` extension method which
can automatically route the event to a method on your control.
@ -93,7 +93,7 @@ you'd do it like this:
FooProperty.Changed.AddClassHandler<MyControl>(x => x.FooChanged);
}
private void FooChanged(PerspexPropertyChangedEventArgs e)
private void FooChanged(AvaloniaPropertyChangedEventArgs e)
{
// The 'e' parameter describes what's changed.
}

4
docs/template/partials/footer.tmpl.partial

@ -1,4 +1,4 @@
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
{{!Copyright (c) Microsoft. All rights reserved. Licensed under the MIT license. See LICENSE file in the project root for full license information.}}
<footer>
<div class="grad-bottom"></div>
@ -7,7 +7,7 @@
<span class="pull-right">
<a href="#top">Back to top</a>
</span>
<span>Copyright © 2016 The Perspex Project<br>Generated by <strong>DocFX</strong></span>
<span>Copyright © 2016 The Avalonia Project<br>Generated by <strong>DocFX</strong></span>
</div>
</div>
</footer>

40
docs/tutorial/from-wpf.md

@ -1,11 +1,11 @@
# Perspex for WPF Developers
# Avalonia for WPF Developers
Perspex is in general very similar to WPF, but you will find differences. Here
Avalonia is in general very similar to WPF, but you will find differences. Here
are the most common:
## Styling
The most obvious difference from other XAML frameworks is that Perspex uses a
The most obvious difference from other XAML frameworks is that Avalonia uses a
[CSS-like styling system](../spec/styles.md). Styles aren't stored in a
`Resources` collection as in WPF, they are stored in a separate `Styles`
collection:
@ -51,7 +51,7 @@ place the template for your items into the control's `DataTemplates`, e.g.
</ListBox.DataTemplates>
</ListBox>
Data templates in Perspex can also target interfaces and derived classes (which
Data templates in Avalonia can also target interfaces and derived classes (which
cannot be done in WPF) and so the order of `DataTemplate`s can be important:
`DataTemplate`s within the same collection are evaluated in declaration order
so you need to place them from most-specific to least-specific as you would in
@ -59,15 +59,15 @@ code.
## HierachicalDataTemplate
WPF's `HierarchicalDataTemplate` is called `TreeDataTemplate` in Perspex (as the
WPF's `HierarchicalDataTemplate` is called `TreeDataTemplate` in Avalonia (as the
former is difficult to type!). The two are almost entirely equivalent except
that the `ItemTemplate` property is not present in Perspex.
that the `ItemTemplate` property is not present in Avalonia.
## UIElement, FrameworkElement and Control
WPF's `UIElement` and `FrameworkElement` are non-templated control base classes,
which roughly equate to the Perspex `Control` class. WPF's `Control` class on
the other hand is a templated control - Perspex's equivalent of this is
which roughly equate to the Avalonia `Control` class. WPF's `Control` class on
the other hand is a templated control - Avalonia's equivalent of this is
`TemplatedControl`.
So to recap:
@ -78,15 +78,15 @@ So to recap:
## DependencyProperty
The Perspex equivalent of `DependencyProperty` is `StyledProperty`, however
Perspex [has a richer property system than WPF](../spec/defining-properties.md),
and includes `DirectProperty` for turning standard CLR properties into Perspex
The Avalonia equivalent of `DependencyProperty` is `StyledProperty`, however
Avalonia [has a richer property system than WPF](../spec/defining-properties.md),
and includes `DirectProperty` for turning standard CLR properties into Avalonia
properties. The common base class of `StyledProperty` and `DirectProperty`
is `PerspexProperty`.
is `AvaloniaProperty`.
# Resources
There is no `Resources` collection on controls in Perspex, however `Style`s
There is no `Resources` collection on controls in Avalonia, however `Style`s
do have a `Resources` collection for style-related resources. These can be
referred to using the `{StyleResource}` markup extension both inside and outside
styles.
@ -102,13 +102,13 @@ reasons](http://www.codemag.com/article/1501091) for this, but briefly:
## Grid
Column and row definitions can be specified in Perspex using strings, avoiding
Column and row definitions can be specified in Avalonia using strings, avoiding
the clunky syntax in WPF:
<Grid ColumnDefinitions="Auto,*,32" RowDefinitions="*,Auto">
A common use of `Grid` in WPF is to stack two controls on top of each other.
For this purpose in Perspex you can just use a `Panel` which is more lightweight
For this purpose in Avalonia you can just use a `Panel` which is more lightweight
than `Grid`.
We don't yet support `SharedSizeScope` in `Grid`.
@ -116,12 +116,12 @@ We don't yet support `SharedSizeScope` in `Grid`.
## ItemsControl
In WPF, `ItemsControl` and derived classes such as `ListBox` have two separate
items properties: `Items` and `ItemsSource`. Perspex however just has a single
items properties: `Items` and `ItemsSource`. Avalonia however just has a single
one: `Items`.
## Tunnelling Events
Perspex has tunnelling events (unlike UWP!) but they're not exposed via
Avalonia has tunnelling events (unlike UWP!) but they're not exposed via
separate `Preview` CLR event handlers. To subscribe to a tunnelling event you
must call `AddHandler` with `RoutingStrategies.Tunnel`:
@ -149,7 +149,7 @@ An example of registering a class handler in WPF might be:
{
}
The equivalent of this in Perspex would be:
The equivalent of this in Avalonia would be:
static MyControl()
{
@ -161,7 +161,7 @@ The equivalent of this in Perspex would be:
}
Notice that in WPF you have to add the class handler as a static method, whereas
in Perspex the class handler is not static: the notification is automatically
in Avalonia the class handler is not static: the notification is automatically
directed to the correct instance.
## PropertyChangedCallback
@ -171,6 +171,6 @@ register a `DependencyProperty` you can supply a static `PropertyChangedCallback
but if you want to listen to changes from elsewhere [things can get complicated
and error-prone](http://stackoverflow.com/questions/23682232).
In Perspex, there is no `PropertyChangedCallback` at the time of registration,
In Avalonia, there is no `PropertyChangedCallback` at the time of registration,
instead a class listener is [added to the control's static constructor in much
the same way that event class listeners are added](../spec/working-with-properties.md#subscribing-to-a-property-on-any-object).

8
docs/tutorial/gettingstarted.md

@ -1,15 +1,15 @@
# Getting Started
# Getting Started
## Windows
![](images/add-dialogs.png)
The easiest way to try out Perspex is to install the Visual Studio Extension.
The easiest way to try out Avalonia is to install the Visual Studio Extension.
This will add a Perspex project template and a Window template to the standard Visual Studo “Add” dialog (yes, icons still to come :) ):
This will add a Avalonia project template and a Window template to the standard Visual Studo “Add” dialog (yes, icons still to come :) ):
## OSX / Linux
It is a little more manual on non-Windows platforms, but using Xamarin Studio you can install the Perspex NuGet package.
It is a little more manual on non-Windows platforms, but using Xamarin Studio you can install the Avalonia NuGet package.
![](images/add-packages.png)

2
nuget/.gitignore

@ -1,2 +1,2 @@
Perspex
Avalonia
*.nupkg

2
nuget/build-appveyor.ps1

@ -27,7 +27,7 @@ if ([string]::IsNullOrWhiteSpace($pullreq))
echo "Repo branch matched"
foreach($pkg in $Packages)
{
nuget.exe push "$($pkg).$($version).nupkg" $key -Source https://www.myget.org/F/perspex-nightly/api/v2/package
nuget.exe push "$($pkg).$($version).nupkg" $key -Source https://www.myget.org/F/avalonia-nightly/api/v2/package
}
}
}

94
nuget/build-version.ps1

@ -8,14 +8,14 @@ foreach($pkg in $Packages)
}
rm -Force -Recurse *.nupkg -ErrorAction SilentlyContinue
Copy-Item template Perspex -Recurse
sv lib "Perspex\lib\portable-windows8+net45"
sv build "Perspex.Desktop\lib\net45"
Copy-Item template Avalonia -Recurse
sv lib "Avalonia\lib\portable-windows8+net45"
sv build "Avalonia.Desktop\lib\net45"
sv skia_root "Perspex.Skia.Desktop"
sv skia_lib "Perspex.Skia.Desktop\lib\net45"
sv android "Perspex.Android\lib\MonoAndroid10"
sv ios "Perspex.iOS\lib\Xamarin.iOS10"
sv skia_root "Avalonia.Skia.Desktop"
sv skia_lib "Avalonia.Skia.Desktop\lib\net45"
sv android "Avalonia.Android\lib\MonoAndroid10"
sv ios "Avalonia.iOS\lib\Xamarin.iOS10"
mkdir $lib -ErrorAction SilentlyContinue
mkdir $build -ErrorAction SilentlyContinue
@ -24,53 +24,53 @@ mkdir $android
mkdir $ios
Copy-Item ..\src\Perspex.Animation\bin\Release\Perspex.Animation.dll $lib
Copy-Item ..\src\Perspex.Animation\bin\Release\Perspex.Animation.xml $lib
Copy-Item ..\src\Perspex.Base\bin\Release\Perspex.Base.dll $lib
Copy-Item ..\src\Perspex.Base\bin\Release\Perspex.Base.xml $lib
Copy-Item ..\src\Perspex.Controls\bin\Release\Perspex.Controls.dll $lib
Copy-Item ..\src\Perspex.Controls\bin\Release\Perspex.Controls.xml $lib
Copy-Item ..\src\Perspex.DesignerSupport\bin\Release\Perspex.DesignerSupport.dll $lib
Copy-Item ..\src\Perspex.DesignerSupport\bin\Release\Perspex.DesignerSupport.xml $lib
Copy-Item ..\src\Perspex.Diagnostics\bin\Release\\Perspex.Diagnostics.dll $lib
Copy-Item ..\src\Perspex.Diagnostics\bin\Release\\Perspex.Diagnostics.xml $lib
Copy-Item ..\src\Perspex.Input\bin\Release\Perspex.Input.dll $lib
Copy-Item ..\src\Perspex.Input\bin\Release\Perspex.Input.xml $lib
Copy-Item ..\src\Perspex.Interactivity\bin\Release\Perspex.Interactivity.dll $lib
Copy-Item ..\src\Perspex.Interactivity\bin\Release\Perspex.Interactivity.xml $lib
Copy-Item ..\src\Perspex.Layout\bin\Release\Perspex.Layout.dll $lib
Copy-Item ..\src\Perspex.Layout\bin\Release\Perspex.Layout.xml $lib
Copy-Item ..\src\Perspex.Logging.Serilog\bin\Release\Perspex.Logging.Serilog.dll $lib
Copy-Item ..\src\Perspex.Logging.Serilog\bin\Release\Perspex.Logging.Serilog.xml $lib
Copy-Item ..\src\Perspex.SceneGraph\bin\Release\Perspex.SceneGraph.dll $lib
Copy-Item ..\src\Perspex.SceneGraph\bin\Release\Perspex.SceneGraph.xml $lib
Copy-Item ..\src\Perspex.Styling\bin\Release\Perspex.Styling.dll $lib
Copy-Item ..\src\Perspex.Styling\bin\Release\Perspex.Styling.xml $lib
Copy-Item ..\src\Perspex.Themes.Default\bin\Release\Perspex.Themes.Default.dll $lib
Copy-Item ..\src\Perspex.Themes.Default\bin\Release\Perspex.Themes.Default.xml $lib
Copy-Item ..\src\Markup\Perspex.Markup\bin\Release\Perspex.Markup.dll $lib
Copy-Item ..\src\Markup\Perspex.Markup\bin\Release\Perspex.Markup.xml $lib
Copy-Item ..\src\Markup\Perspex.Markup.Xaml\bin\Release\Perspex.Markup.Xaml.dll $lib
Copy-Item ..\src\Markup\Perspex.Markup.Xaml\bin\Release\Perspex.Markup.Xaml.xml $lib
Copy-Item ..\src\Perspex.HtmlRenderer\bin\Release\Perspex.HtmlRenderer.dll $lib
Copy-Item ..\src\Perspex.ReactiveUI\bin\Release\Perspex.ReactiveUI.dll $lib
Copy-Item ..\src\Avalonia.Animation\bin\Release\Avalonia.Animation.dll $lib
Copy-Item ..\src\Avalonia.Animation\bin\Release\Avalonia.Animation.xml $lib
Copy-Item ..\src\Avalonia.Base\bin\Release\Avalonia.Base.dll $lib
Copy-Item ..\src\Avalonia.Base\bin\Release\Avalonia.Base.xml $lib
Copy-Item ..\src\Avalonia.Controls\bin\Release\Avalonia.Controls.dll $lib
Copy-Item ..\src\Avalonia.Controls\bin\Release\Avalonia.Controls.xml $lib
Copy-Item ..\src\Avalonia.DesignerSupport\bin\Release\Avalonia.DesignerSupport.dll $lib
Copy-Item ..\src\Avalonia.DesignerSupport\bin\Release\Avalonia.DesignerSupport.xml $lib
Copy-Item ..\src\Avalonia.Diagnostics\bin\Release\\Avalonia.Diagnostics.dll $lib
Copy-Item ..\src\Avalonia.Diagnostics\bin\Release\\Avalonia.Diagnostics.xml $lib
Copy-Item ..\src\Avalonia.Input\bin\Release\Avalonia.Input.dll $lib
Copy-Item ..\src\Avalonia.Input\bin\Release\Avalonia.Input.xml $lib
Copy-Item ..\src\Avalonia.Interactivity\bin\Release\Avalonia.Interactivity.dll $lib
Copy-Item ..\src\Avalonia.Interactivity\bin\Release\Avalonia.Interactivity.xml $lib
Copy-Item ..\src\Avalonia.Layout\bin\Release\Avalonia.Layout.dll $lib
Copy-Item ..\src\Avalonia.Layout\bin\Release\Avalonia.Layout.xml $lib
Copy-Item ..\src\Avalonia.Logging.Serilog\bin\Release\Avalonia.Logging.Serilog.dll $lib
Copy-Item ..\src\Avalonia.Logging.Serilog\bin\Release\Avalonia.Logging.Serilog.xml $lib
Copy-Item ..\src\Avalonia.SceneGraph\bin\Release\Avalonia.SceneGraph.dll $lib
Copy-Item ..\src\Avalonia.SceneGraph\bin\Release\Avalonia.SceneGraph.xml $lib
Copy-Item ..\src\Avalonia.Styling\bin\Release\Avalonia.Styling.dll $lib
Copy-Item ..\src\Avalonia.Styling\bin\Release\Avalonia.Styling.xml $lib
Copy-Item ..\src\Avalonia.Themes.Default\bin\Release\Avalonia.Themes.Default.dll $lib
Copy-Item ..\src\Avalonia.Themes.Default\bin\Release\Avalonia.Themes.Default.xml $lib
Copy-Item ..\src\Markup\Avalonia.Markup\bin\Release\Avalonia.Markup.dll $lib
Copy-Item ..\src\Markup\Avalonia.Markup\bin\Release\Avalonia.Markup.xml $lib
Copy-Item ..\src\Markup\Avalonia.Markup.Xaml\bin\Release\Avalonia.Markup.Xaml.dll $lib
Copy-Item ..\src\Markup\Avalonia.Markup.Xaml\bin\Release\Avalonia.Markup.Xaml.xml $lib
Copy-Item ..\src\Avalonia.HtmlRenderer\bin\Release\Avalonia.HtmlRenderer.dll $lib
Copy-Item ..\src\Avalonia.ReactiveUI\bin\Release\Avalonia.ReactiveUI.dll $lib
Copy-Item ..\src\Windows\Perspex.Direct2D1\bin\Release\Perspex.Direct2D1.dll $build
Copy-Item ..\src\Windows\Perspex.Win32\bin\Release\Perspex.Win32.dll $build
Copy-Item ..\src\Gtk\Perspex.Gtk\bin\Release\Perspex.Gtk.dll $build
Copy-Item ..\src\Gtk\Perspex.Cairo\bin\Release\Perspex.Cairo.dll $build
Copy-Item ..\src\Windows\Avalonia.Direct2D1\bin\Release\Avalonia.Direct2D1.dll $build
Copy-Item ..\src\Windows\Avalonia.Win32\bin\Release\Avalonia.Win32.dll $build
Copy-Item ..\src\Gtk\Avalonia.Gtk\bin\Release\Avalonia.Gtk.dll $build
Copy-Item ..\src\Gtk\Avalonia.Cairo\bin\Release\Avalonia.Cairo.dll $build
Copy-Item ..\src\Skia\Perspex.Skia.Desktop\bin\x86\Release\Perspex.Skia.Desktop.dll $skia_lib
Copy-Item ..\src\Skia\Avalonia.Skia.Desktop\bin\x86\Release\Avalonia.Skia.Desktop.dll $skia_lib
Copy-Item ..\src\Android\Perspex.Android\bin\Release\Perspex.Android.dll $android
Copy-Item ..\src\Skia\Perspex.Skia.Android\bin\Release\Perspex.Skia.Android.dll $android
Copy-Item ..\src\Android\Avalonia.Android\bin\Release\Avalonia.Android.dll $android
Copy-Item ..\src\Skia\Avalonia.Skia.Android\bin\Release\Avalonia.Skia.Android.dll $android
Copy-Item ..\src\iOS\Perspex.iOS\bin\iPhone\Release\Perspex.iOS.dll $ios
Copy-Item ..\src\Skia\Perspex.Skia.iOS\bin\iPhone\Release\Perspex.Skia.iOS.dll $ios
Copy-Item ..\src\iOS\Avalonia.iOS\bin\iPhone\Release\Avalonia.iOS.dll $ios
Copy-Item ..\src\Skia\Avalonia.Skia.iOS\bin\iPhone\Release\Avalonia.Skia.iOS.dll $ios
foreach($pkg in $Packages)
{
(gc Perspex\$pkg.nuspec).replace('#VERSION#', $args[0]) | sc $pkg\$pkg.nuspec
(gc Avalonia\$pkg.nuspec).replace('#VERSION#', $args[0]) | sc $pkg\$pkg.nuspec
}
foreach($pkg in $Packages)

2
nuget/include.ps1

@ -1 +1 @@
$Packages = @("Perspex", "Perspex.Desktop", "Perspex.Skia.Desktop", "Perspex.Android", "Perspex.iOS")
$Packages = @("Avalonia", "Avalonia.Desktop", "Avalonia.Skia.Desktop", "Avalonia.Android", "Avalonia.iOS")

27
nuget/template/Avalonia.Android.nuspec

@ -0,0 +1,27 @@
<?xml version="1.0"?>
<package>
<metadata>
<id>Avalonia.Android</id>
<version>#VERSION#</version>
<authors>Avalonia Team</authors>
<owners>stevenk</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>https://github.com/AvaloniaUI/Avalonia/</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>The Avalonia UI framework</description>
<releaseNotes></releaseNotes>
<copyright>Copyright 2015</copyright>
<tags>Avalonia</tags>
<dependencies>
<dependency id="Serilog" version="1.5.14" />
<dependency id="Splat" version="1.6.2" />
<dependency id="Sprache" version="2.0.0.50" />
<dependency id="Rx-Core" version="2.2.5" />
<dependency id="Rx-Interfaces" version="2.2.5" />
<dependency id="Rx-Linq" version="2.2.5" />
<dependency id="Rx-Main" version="2.2.5" />
<dependency id="Rx-PlatformServices" version="2.2.5" />
<dependency id="Avalonia" version="#VERSION#" />
</dependencies>
</metadata>
</package>

30
nuget/template/Avalonia.Desktop.nuspec

@ -0,0 +1,30 @@
<?xml version="1.0"?>
<package>
<metadata>
<id>Avalonia.Desktop</id>
<version>#VERSION#</version>
<authors>Avalonia Team</authors>
<owners>stevenk</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>https://github.com/AvaloniaUI/Avalonia/</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>The Avalonia UI framework</description>
<releaseNotes></releaseNotes>
<copyright>Copyright 2015</copyright>
<tags>Avalonia</tags>
<dependencies>
<dependency id="Serilog" version="1.5.14" />
<dependency id="Splat" version="1.6.2" />
<dependency id="Sprache" version="2.0.0.50" />
<dependency id="Rx-Core" version="2.2.5" />
<dependency id="Rx-Interfaces" version="2.2.5" />
<dependency id="Rx-Linq" version="2.2.5" />
<dependency id="Rx-Main" version="2.2.5" />
<dependency id="Rx-PlatformServices" version="2.2.5" />
<dependency id="SharpDX" version="3.0.2"/>
<dependency id="SharpDX.Direct2D1" version="3.0.2"/>
<dependency id="SharpDX.DXGI" version="3.0.2"/>
<dependency id="Avalonia" version="#VERSION#" />
</dependencies>
</metadata>
</package>

20
nuget/template/Avalonia.Skia.Desktop.nuspec

@ -0,0 +1,20 @@
<?xml version="1.0"?>
<package>
<metadata>
<id>Avalonia.Skia.Desktop</id>
<version>#VERSION#</version>
<authors>Avalonia Team</authors>
<owners>stevenk</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>https://github.com/AvaloniaUI/Avalonia/</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>The Avalonia UI framework</description>
<releaseNotes></releaseNotes>
<copyright>Copyright 2015</copyright>
<tags>Avalonia</tags>
<dependencies>
<dependency id="SkiaSharp" version="1.49.2.0-beta"/>
<dependency id="Avalonia" version="#VERSION#" />
</dependencies>
</metadata>
</package>

27
nuget/template/Avalonia.iOS.nuspec

@ -0,0 +1,27 @@
<?xml version="1.0"?>
<package>
<metadata>
<id>Avalonia.iOS</id>
<version>#VERSION#</version>
<authors>Avalonia Team</authors>
<owners>stevenk</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>https://github.com/AvaloniaUI/Avalonia/</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>The Avalonia UI framework</description>
<releaseNotes></releaseNotes>
<copyright>Copyright 2015</copyright>
<tags>Avalonia</tags>
<dependencies>
<dependency id="Serilog" version="1.5.14" />
<dependency id="Splat" version="1.6.2" />
<dependency id="Sprache" version="2.0.0.50" />
<dependency id="Rx-Core" version="2.2.5" />
<dependency id="Rx-Interfaces" version="2.2.5" />
<dependency id="Rx-Linq" version="2.2.5" />
<dependency id="Rx-Main" version="2.2.5" />
<dependency id="Rx-PlatformServices" version="2.2.5" />
<dependency id="Avalonia" version="#VERSION#" />
</dependencies>
</metadata>
</package>

26
nuget/template/Avalonia.nuspec

@ -0,0 +1,26 @@
<?xml version="1.0"?>
<package>
<metadata>
<id>Avalonia</id>
<version>#VERSION#</version>
<authors>Avalonia Team</authors>
<owners>stevenk</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>https://github.com/AvaloniaUI/Avalonia/</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>The Avalonia UI framework</description>
<releaseNotes>Initial alpha release.</releaseNotes>
<copyright>Copyright 2015</copyright>
<tags>Avalonia</tags>
<dependencies>
<dependency id="Serilog" version="1.5.14" />
<dependency id="Splat" version="1.6.2" />
<dependency id="Sprache" version="2.0.0.50" />
<dependency id="Rx-Core" version="2.2.5" />
<dependency id="Rx-Interfaces" version="2.2.5" />
<dependency id="Rx-Linq" version="2.2.5" />
<dependency id="Rx-Main" version="2.2.5" />
<dependency id="Rx-PlatformServices" version="2.2.5" />
</dependencies>
</metadata>
</package>

27
nuget/template/Perspex.Android.nuspec

@ -1,27 +0,0 @@
<?xml version="1.0"?>
<package>
<metadata>
<id>Perspex.Android</id>
<version>#VERSION#</version>
<authors>Perspex Team</authors>
<owners>stevenk</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>https://github.com/Perspex/Perspex/</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>The Perspex UI framework</description>
<releaseNotes></releaseNotes>
<copyright>Copyright 2015</copyright>
<tags>Perspex</tags>
<dependencies>
<dependency id="Serilog" version="1.5.14" />
<dependency id="Splat" version="1.6.2" />
<dependency id="Sprache" version="2.0.0.50" />
<dependency id="Rx-Core" version="2.2.5" />
<dependency id="Rx-Interfaces" version="2.2.5" />
<dependency id="Rx-Linq" version="2.2.5" />
<dependency id="Rx-Main" version="2.2.5" />
<dependency id="Rx-PlatformServices" version="2.2.5" />
<dependency id="Perspex" version="#VERSION#" />
</dependencies>
</metadata>
</package>

30
nuget/template/Perspex.Desktop.nuspec

@ -1,30 +0,0 @@
<?xml version="1.0"?>
<package>
<metadata>
<id>Perspex.Desktop</id>
<version>#VERSION#</version>
<authors>Perspex Team</authors>
<owners>stevenk</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>https://github.com/Perspex/Perspex/</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>The Perspex UI framework</description>
<releaseNotes></releaseNotes>
<copyright>Copyright 2015</copyright>
<tags>Perspex</tags>
<dependencies>
<dependency id="Serilog" version="1.5.14" />
<dependency id="Splat" version="1.6.2" />
<dependency id="Sprache" version="2.0.0.50" />
<dependency id="Rx-Core" version="2.2.5" />
<dependency id="Rx-Interfaces" version="2.2.5" />
<dependency id="Rx-Linq" version="2.2.5" />
<dependency id="Rx-Main" version="2.2.5" />
<dependency id="Rx-PlatformServices" version="2.2.5" />
<dependency id="SharpDX" version="3.0.2"/>
<dependency id="SharpDX.Direct2D1" version="3.0.2"/>
<dependency id="SharpDX.DXGI" version="3.0.2"/>
<dependency id="Perspex" version="#VERSION#" />
</dependencies>
</metadata>
</package>

20
nuget/template/Perspex.Skia.Desktop.nuspec

@ -1,20 +0,0 @@
<?xml version="1.0"?>
<package>
<metadata>
<id>Perspex.Skia.Desktop</id>
<version>#VERSION#</version>
<authors>Perspex Team</authors>
<owners>stevenk</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>https://github.com/Perspex/Perspex/</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>The Perspex UI framework</description>
<releaseNotes></releaseNotes>
<copyright>Copyright 2015</copyright>
<tags>Perspex</tags>
<dependencies>
<dependency id="SkiaSharp" version="1.49.2.0-beta"/>
<dependency id="Perspex" version="#VERSION#" />
</dependencies>
</metadata>
</package>

27
nuget/template/Perspex.iOS.nuspec

@ -1,27 +0,0 @@
<?xml version="1.0"?>
<package>
<metadata>
<id>Perspex.iOS</id>
<version>#VERSION#</version>
<authors>Perspex Team</authors>
<owners>stevenk</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>https://github.com/Perspex/Perspex/</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>The Perspex UI framework</description>
<releaseNotes></releaseNotes>
<copyright>Copyright 2015</copyright>
<tags>Perspex</tags>
<dependencies>
<dependency id="Serilog" version="1.5.14" />
<dependency id="Splat" version="1.6.2" />
<dependency id="Sprache" version="2.0.0.50" />
<dependency id="Rx-Core" version="2.2.5" />
<dependency id="Rx-Interfaces" version="2.2.5" />
<dependency id="Rx-Linq" version="2.2.5" />
<dependency id="Rx-Main" version="2.2.5" />
<dependency id="Rx-PlatformServices" version="2.2.5" />
<dependency id="Perspex" version="#VERSION#" />
</dependencies>
</metadata>
</package>

26
nuget/template/Perspex.nuspec

@ -1,26 +0,0 @@
<?xml version="1.0"?>
<package>
<metadata>
<id>Perspex</id>
<version>#VERSION#</version>
<authors>Perspex Team</authors>
<owners>stevenk</owners>
<licenseUrl>http://opensource.org/licenses/MIT</licenseUrl>
<projectUrl>https://github.com/Perspex/Perspex/</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>The Perspex UI framework</description>
<releaseNotes>Initial alpha release.</releaseNotes>
<copyright>Copyright 2015</copyright>
<tags>Perspex</tags>
<dependencies>
<dependency id="Serilog" version="1.5.14" />
<dependency id="Splat" version="1.6.2" />
<dependency id="Sprache" version="2.0.0.50" />
<dependency id="Rx-Core" version="2.2.5" />
<dependency id="Rx-Interfaces" version="2.2.5" />
<dependency id="Rx-Linq" version="2.2.5" />
<dependency id="Rx-Main" version="2.2.5" />
<dependency id="Rx-PlatformServices" version="2.2.5" />
</dependencies>
</metadata>
</package>

24
readme.md

@ -1,7 +1,7 @@
# Perspex
[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/Perspex/Perspex?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge)
# Avalonia
[![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/Avalonia/Avalonia?utm_campaign=pr-badge&utm_content=badge&utm_medium=badge&utm_source=badge)
[![Build status](https://ci.appveyor.com/api/projects/status/hubk3k0w9idyibfg/branch/master?svg=true)](https://ci.appveyor.com/project/Perspex/Perspex/branch/master)
[![Build status](https://ci.appveyor.com/api/projects/status/hubk3k0w9idyibfg/branch/master?svg=true)](https://ci.appveyor.com/project/Avalonia/Avalonia/branch/master)
A multi-platform .NET UI framework. It can run on Windows, Linux, Mac OS X, iOS and Android.
@ -9,7 +9,7 @@ A multi-platform .NET UI framework. It can run on Windows, Linux, Mac OS X, iOS
Desktop platforms:
<a href='https://www.youtube.com/watch?t=28&v=c_AB_XSILp0' target='_blank'>![](docs/images/perspex-video.png)<a/>
<a href='https://www.youtube.com/watch?t=28&v=c_AB_XSILp0' target='_blank'>![](docs/images/avalonia-video.png)<a/>
Mobile platforms:
@ -17,21 +17,21 @@ Mobile platforms:
## NuGet
Perspex is delivered as a NuGet package.
You can find the packages here: ([stable(ish)](https://www.nuget.org/packages/Perspex/), [nightly](https://github.com/Perspex/Perspex/wiki/Using-nightly-build-feed))
Avalonia is delivered as a NuGet package.
You can find the packages here: ([stable(ish)](https://www.nuget.org/packages/Avalonia/), [nightly](https://github.com/AvaloniaUI/Avalonia/wiki/Using-nightly-build-feed))
You can install the package like this:
`Install-Package Perspex -Pre`
`Install-Package Avalonia -Pre`
## Background
Perspex is a multi-platform windowing toolkit - somewhat like WPF - that is intended to be multi-
Avalonia is a multi-platform windowing toolkit - somewhat like WPF - that is intended to be multi-
platform. It supports XAML, lookless controls and a flexible styling system, and runs on Windows
using Direct2D and other operating systems using Gtk & Cairo.
## Current Status
Perspex is now in alpha. What does "alpha" mean? Well, it means that it's now at a stage where you
Avalonia is now in alpha. What does "alpha" mean? Well, it means that it's now at a stage where you
can have a play and hopefully create simple applications. There's now a [Visual
Studio Extension](https://visualstudiogallery.msdn.microsoft.com/a4542e8a-b56c-4295-8df1-7e220178b873)
containing project and item templates that will help you get started, and
@ -42,13 +42,13 @@ framework.
## Documentation
As mentioned above, Perspex is still in alpha and as such there's not much documentation yet. You can
As mentioned above, Avalonia is still in alpha and as such there's not much documentation yet. You can
take a look at the [getting started page](docs/tutorial/gettingstarted.md) for an
overview of how to get started but probably the best thing to do for now is to already know a little bit
about WPF/Silverlight/UWP/XAML and ask questions in our [Gitter room](https://gitter.im/Perspex/Perspex).
about WPF/Silverlight/UWP/XAML and ask questions in our [Gitter room](https://gitter.im/Avalonia/Avalonia).
There's also a high-level [architecture document](docs/spec/architecture.md) that is currently a little bit
out of date, and I've also started writing blog posts on Perspex at http://grokys.github.io/.
out of date, and I've also started writing blog posts on Avalonia at http://grokys.github.io/.
Contributions are always welcome!

6
samples/BindingTest/App.xaml

@ -1,6 +1,6 @@
<Application xmlns="https://github.com/perspex">
<Application xmlns="https://github.com/avaloniaui">
<Application.Styles>
<StyleInclude Source="resm:Perspex.Themes.Default.DefaultTheme.xaml?assembly=Perspex.Themes.Default"/>
<StyleInclude Source="resm:Perspex.Themes.Default.Accents.BaseLight.xaml?assembly=Perspex.Themes.Default"/>
<StyleInclude Source="resm:Avalonia.Themes.Default.DefaultTheme.xaml?assembly=Avalonia.Themes.Default"/>
<StyleInclude Source="resm:Avalonia.Themes.Default.Accents.BaseLight.xaml?assembly=Avalonia.Themes.Default"/>
</Application.Styles>
</Application>

12
samples/BindingTest/App.xaml.cs

@ -1,9 +1,9 @@
using System;
using Perspex;
using Perspex.Controls;
using Perspex.Diagnostics;
using Perspex.Logging.Serilog;
using Perspex.Markup.Xaml;
using System;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Diagnostics;
using Avalonia.Logging.Serilog;
using Avalonia.Markup.Xaml;
using Serilog;
namespace BindingTest

70
samples/BindingTest/BindingTest.csproj

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
@ -100,73 +100,73 @@
<EmbeddedResource Include="TestItemView.xaml" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Markup\Perspex.Markup.Xaml\Perspex.Markup.Xaml.csproj">
<ProjectReference Include="..\..\src\Markup\Avalonia.Markup.Xaml\Avalonia.Markup.Xaml.csproj">
<Project>{3e53a01a-b331-47f3-b828-4a5717e77a24}</Project>
<Name>Perspex.Markup.Xaml</Name>
<Name>Avalonia.Markup.Xaml</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Markup\Perspex.Markup\Perspex.Markup.csproj">
<ProjectReference Include="..\..\src\Markup\Avalonia.Markup\Avalonia.Markup.csproj">
<Project>{6417e941-21bc-467b-a771-0de389353ce6}</Project>
<Name>Perspex.Markup</Name>
<Name>Avalonia.Markup</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Animation\Perspex.Animation.csproj">
<ProjectReference Include="..\..\src\Avalonia.Animation\Avalonia.Animation.csproj">
<Project>{d211e587-d8bc-45b9-95a4-f297c8fa5200}</Project>
<Name>Perspex.Animation</Name>
<Name>Avalonia.Animation</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Base\Perspex.Base.csproj">
<ProjectReference Include="..\..\src\Avalonia.Base\Avalonia.Base.csproj">
<Project>{b09b78d8-9b26-48b0-9149-d64a2f120f3f}</Project>
<Name>Perspex.Base</Name>
<Name>Avalonia.Base</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Controls\Perspex.Controls.csproj">
<ProjectReference Include="..\..\src\Avalonia.Controls\Avalonia.Controls.csproj">
<Project>{d2221c82-4a25-4583-9b43-d791e3f6820c}</Project>
<Name>Perspex.Controls</Name>
<Name>Avalonia.Controls</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.DesignerSupport\Perspex.DesignerSupport.csproj">
<ProjectReference Include="..\..\src\Avalonia.DesignerSupport\Avalonia.DesignerSupport.csproj">
<Project>{799a7bb5-3c2c-48b6-85a7-406a12c420da}</Project>
<Name>Perspex.DesignerSupport</Name>
<Name>Avalonia.DesignerSupport</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Diagnostics\Perspex.Diagnostics.csproj">
<ProjectReference Include="..\..\src\Avalonia.Diagnostics\Avalonia.Diagnostics.csproj">
<Project>{7062ae20-5dcc-4442-9645-8195bdece63e}</Project>
<Name>Perspex.Diagnostics</Name>
<Name>Avalonia.Diagnostics</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Input\Perspex.Input.csproj">
<ProjectReference Include="..\..\src\Avalonia.Input\Avalonia.Input.csproj">
<Project>{62024b2d-53eb-4638-b26b-85eeaa54866e}</Project>
<Name>Perspex.Input</Name>
<Name>Avalonia.Input</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Interactivity\Perspex.Interactivity.csproj">
<ProjectReference Include="..\..\src\Avalonia.Interactivity\Avalonia.Interactivity.csproj">
<Project>{6b0ed19d-a08b-461c-a9d9-a9ee40b0c06b}</Project>
<Name>Perspex.Interactivity</Name>
<Name>Avalonia.Interactivity</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Layout\Perspex.Layout.csproj">
<ProjectReference Include="..\..\src\Avalonia.Layout\Avalonia.Layout.csproj">
<Project>{42472427-4774-4c81-8aff-9f27b8e31721}</Project>
<Name>Perspex.Layout</Name>
<Name>Avalonia.Layout</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Logging.Serilog\Perspex.Logging.Serilog.csproj">
<ProjectReference Include="..\..\src\Avalonia.Logging.Serilog\Avalonia.Logging.Serilog.csproj">
<Project>{b61b66a3-b82d-4875-8001-89d3394fe0c9}</Project>
<Name>Perspex.Logging.Serilog</Name>
<Name>Avalonia.Logging.Serilog</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.ReactiveUI\Perspex.ReactiveUI.csproj">
<ProjectReference Include="..\..\src\Avalonia.ReactiveUI\Avalonia.ReactiveUI.csproj">
<Project>{6417b24e-49c2-4985-8db2-3ab9d898ec91}</Project>
<Name>Perspex.ReactiveUI</Name>
<Name>Avalonia.ReactiveUI</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.SceneGraph\Perspex.SceneGraph.csproj">
<ProjectReference Include="..\..\src\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
<Project>{eb582467-6abb-43a1-b052-e981ba910e3a}</Project>
<Name>Perspex.SceneGraph</Name>
<Name>Avalonia.SceneGraph</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Styling\Perspex.Styling.csproj">
<ProjectReference Include="..\..\src\Avalonia.Styling\Avalonia.Styling.csproj">
<Project>{f1baa01a-f176-4c6a-b39d-5b40bb1b148f}</Project>
<Name>Perspex.Styling</Name>
<Name>Avalonia.Styling</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Themes.Default\Perspex.Themes.Default.csproj">
<ProjectReference Include="..\..\src\Avalonia.Themes.Default\Avalonia.Themes.Default.csproj">
<Project>{3e10a5fa-e8da-48b1-ad44-6a5b6cb7750f}</Project>
<Name>Perspex.Themes.Default</Name>
<Name>Avalonia.Themes.Default</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Windows\Perspex.Direct2D1\Perspex.Direct2D1.csproj">
<ProjectReference Include="..\..\src\Windows\Avalonia.Direct2D1\Avalonia.Direct2D1.csproj">
<Project>{3e908f67-5543-4879-a1dc-08eace79b3cd}</Project>
<Name>Perspex.Direct2D1</Name>
<Name>Avalonia.Direct2D1</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Windows\Perspex.Win32\Perspex.Win32.csproj">
<ProjectReference Include="..\..\src\Windows\Avalonia.Win32\Avalonia.Win32.csproj">
<Project>{811a76cf-1cf6-440f-963b-bbe31bd72a82}</Project>
<Name>Perspex.Win32</Name>
<Name>Avalonia.Win32</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />

2
samples/BindingTest/MainWindow.xaml

@ -1,4 +1,4 @@
<Window xmlns="https://github.com/perspex"
<Window xmlns="https://github.com/avaloniaui"
xmlns:vm="clr-namespace:BindingTest.ViewModels;assembly=BindingTest"
xmlns:local="clr-namespace:BindingTest;assembly=BindingTest">
<Window.Styles>

8
samples/BindingTest/MainWindow.xaml.cs

@ -1,7 +1,7 @@
using BindingTest.ViewModels;
using Perspex;
using Perspex.Controls;
using Perspex.Markup.Xaml;
using BindingTest.ViewModels;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace BindingTest
{

2
samples/BindingTest/Properties/AssemblyInfo.cs

@ -1,4 +1,4 @@
using System.Reflection;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

2
samples/BindingTest/TestItemView.xaml

@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/perspex">
<UserControl xmlns="https://github.com/avaloniaui">
<StackPanel>
<TextBlock Classes="h1" Text="{Binding StringValue}"/>
<TextBox Text="{Binding Detail}" AcceptsReturn="True"/>

6
samples/BindingTest/TestItemView.xaml.cs

@ -1,5 +1,5 @@
using Perspex.Controls;
using Perspex.Markup.Xaml;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace BindingTest
{
@ -12,7 +12,7 @@ namespace BindingTest
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
AvaloniaXamlLoader.Load(this);
}
}
}

2
samples/BindingTest/ViewModels/MainWindowViewModel.cs

@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.ObjectModel;
using System.Linq;
using ReactiveUI;

2
samples/BindingTest/ViewModels/TestItem.cs

@ -1,4 +1,4 @@
using ReactiveUI;
using ReactiveUI;
namespace BindingTest.ViewModels
{

50
samples/ControlCatalog.Desktop/ControlCatalog.Desktop.csproj

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
@ -59,53 +59,53 @@
<None Include="App.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Gtk\Perspex.Cairo\Perspex.Cairo.csproj">
<ProjectReference Include="..\..\src\Gtk\Avalonia.Cairo\Avalonia.Cairo.csproj">
<Project>{FB05AC90-89BA-4F2F-A924-F37875FB547C}</Project>
<Name>Perspex.Cairo</Name>
<Name>Avalonia.Cairo</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Gtk\Perspex.Gtk\Perspex.Gtk.csproj">
<ProjectReference Include="..\..\src\Gtk\Avalonia.Gtk\Avalonia.Gtk.csproj">
<Project>{54F237D5-A70A-4752-9656-0C70B1A7B047}</Project>
<Name>Perspex.Gtk</Name>
<Name>Avalonia.Gtk</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Markup\Perspex.Markup.Xaml\Perspex.Markup.Xaml.csproj">
<ProjectReference Include="..\..\src\Markup\Avalonia.Markup.Xaml\Avalonia.Markup.Xaml.csproj">
<Project>{3E53A01A-B331-47F3-B828-4A5717E77A24}</Project>
<Name>Perspex.Markup.Xaml</Name>
<Name>Avalonia.Markup.Xaml</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Markup\Perspex.Markup\Perspex.Markup.csproj">
<ProjectReference Include="..\..\src\Markup\Avalonia.Markup\Avalonia.Markup.csproj">
<Project>{6417E941-21BC-467B-A771-0DE389353CE6}</Project>
<Name>Perspex.Markup</Name>
<Name>Avalonia.Markup</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Base\Perspex.Base.csproj">
<ProjectReference Include="..\..\src\Avalonia.Base\Avalonia.Base.csproj">
<Project>{B09B78D8-9B26-48B0-9149-D64A2F120F3F}</Project>
<Name>Perspex.Base</Name>
<Name>Avalonia.Base</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Controls\Perspex.Controls.csproj">
<ProjectReference Include="..\..\src\Avalonia.Controls\Avalonia.Controls.csproj">
<Project>{D2221C82-4A25-4583-9B43-D791E3F6820C}</Project>
<Name>Perspex.Controls</Name>
<Name>Avalonia.Controls</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Logging.Serilog\Perspex.Logging.Serilog.csproj">
<ProjectReference Include="..\..\src\Avalonia.Logging.Serilog\Avalonia.Logging.Serilog.csproj">
<Project>{B61B66A3-B82D-4875-8001-89D3394FE0C9}</Project>
<Name>Perspex.Logging.Serilog</Name>
<Name>Avalonia.Logging.Serilog</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Styling\Perspex.Styling.csproj">
<ProjectReference Include="..\..\src\Avalonia.Styling\Avalonia.Styling.csproj">
<Project>{F1BAA01A-F176-4C6A-B39D-5B40BB1B148F}</Project>
<Name>Perspex.Styling</Name>
<Name>Avalonia.Styling</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Themes.Default\Perspex.Themes.Default.csproj">
<ProjectReference Include="..\..\src\Avalonia.Themes.Default\Avalonia.Themes.Default.csproj">
<Project>{3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}</Project>
<Name>Perspex.Themes.Default</Name>
<Name>Avalonia.Themes.Default</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Skia\Perspex.Skia.Desktop\Perspex.Skia.Desktop.csproj">
<ProjectReference Include="..\..\src\Skia\Avalonia.Skia.Desktop\Avalonia.Skia.Desktop.csproj">
<Project>{925DD807-B651-475F-9F7C-CBEB974CE43D}</Project>
<Name>Perspex.Skia.Desktop</Name>
<Name>Avalonia.Skia.Desktop</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Windows\Perspex.Direct2D1\Perspex.Direct2D1.csproj">
<ProjectReference Include="..\..\src\Windows\Avalonia.Direct2D1\Avalonia.Direct2D1.csproj">
<Project>{3E908F67-5543-4879-A1DC-08EACE79B3CD}</Project>
<Name>Perspex.Direct2D1</Name>
<Name>Avalonia.Direct2D1</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Windows\Perspex.Win32\Perspex.Win32.csproj">
<ProjectReference Include="..\..\src\Windows\Avalonia.Win32\Avalonia.Win32.csproj">
<Project>{811A76CF-1CF6-440F-963B-BBE31BD72A82}</Project>
<Name>Perspex.Win32</Name>
<Name>Avalonia.Win32</Name>
</ProjectReference>
<ProjectReference Include="..\ControlCatalog\ControlCatalog.csproj">
<Project>{d0a739b9-3c68-4ba6-a328-41606954b6bd}</Project>

6
samples/ControlCatalog.Desktop/Program.cs

@ -1,10 +1,10 @@
using Perspex.Logging.Serilog;
using Avalonia.Logging.Serilog;
using Serilog;
using System;
using System.Linq;
using Perspex;
using Avalonia;
using System.Reflection;
using Perspex.Platform;
using Avalonia.Platform;
namespace ControlCatalog
{

2
samples/ControlCatalog.Desktop/Properties/AssemblyInfo.cs

@ -1,4 +1,4 @@
using System.Reflection;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

4
samples/ControlCatalog.iOS/AppDelegate.cs

@ -1,6 +1,6 @@
using Foundation;
using Foundation;
using UIKit;
using Perspex;
using Avalonia;
namespace ControlCatalog
{

62
samples/ControlCatalog.iOS/ControlCatalog.iOS.csproj

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
@ -115,67 +115,67 @@
<Reference Include="Xamarin.iOS" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\iOS\Perspex.iOS\Perspex.iOS.csproj">
<ProjectReference Include="..\..\src\iOS\Avalonia.iOS\Avalonia.iOS.csproj">
<Project>{4488AD85-1495-4809-9AA4-DDFE0A48527E}</Project>
<Name>Perspex.iOS</Name>
<Name>Avalonia.iOS</Name>
<IsAppExtension>false</IsAppExtension>
<IsWatchApp>false</IsWatchApp>
</ProjectReference>
<ProjectReference Include="..\..\src\Markup\Perspex.Markup.Xaml\Perspex.Markup.Xaml.csproj">
<ProjectReference Include="..\..\src\Markup\Avalonia.Markup.Xaml\Avalonia.Markup.Xaml.csproj">
<Project>{3E53A01A-B331-47F3-B828-4A5717E77A24}</Project>
<Name>Perspex.Markup.Xaml</Name>
<Name>Avalonia.Markup.Xaml</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Markup\Perspex.Markup\Perspex.Markup.csproj">
<ProjectReference Include="..\..\src\Markup\Avalonia.Markup\Avalonia.Markup.csproj">
<Project>{6417E941-21BC-467B-A771-0DE389353CE6}</Project>
<Name>Perspex.Markup</Name>
<Name>Avalonia.Markup</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Animation\Perspex.Animation.csproj">
<ProjectReference Include="..\..\src\Avalonia.Animation\Avalonia.Animation.csproj">
<Project>{D211E587-D8BC-45B9-95A4-F297C8FA5200}</Project>
<Name>Perspex.Animation</Name>
<Name>Avalonia.Animation</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Base\Perspex.Base.csproj">
<ProjectReference Include="..\..\src\Avalonia.Base\Avalonia.Base.csproj">
<Project>{B09B78D8-9B26-48B0-9149-D64A2F120F3F}</Project>
<Name>Perspex.Base</Name>
<Name>Avalonia.Base</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Controls\Perspex.Controls.csproj">
<ProjectReference Include="..\..\src\Avalonia.Controls\Avalonia.Controls.csproj">
<Project>{D2221C82-4A25-4583-9B43-D791E3F6820C}</Project>
<Name>Perspex.Controls</Name>
<Name>Avalonia.Controls</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Diagnostics\Perspex.Diagnostics.csproj">
<ProjectReference Include="..\..\src\Avalonia.Diagnostics\Avalonia.Diagnostics.csproj">
<Project>{7062AE20-5DCC-4442-9645-8195BDECE63E}</Project>
<Name>Perspex.Diagnostics</Name>
<Name>Avalonia.Diagnostics</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.HtmlRenderer\Perspex.HtmlRenderer.csproj">
<ProjectReference Include="..\..\src\Avalonia.HtmlRenderer\Avalonia.HtmlRenderer.csproj">
<Project>{5FB2B005-0A7F-4DAD-ADD4-3ED01444E63D}</Project>
<Name>Perspex.HtmlRenderer</Name>
<Name>Avalonia.HtmlRenderer</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Input\Perspex.Input.csproj">
<ProjectReference Include="..\..\src\Avalonia.Input\Avalonia.Input.csproj">
<Project>{62024B2D-53EB-4638-B26B-85EEAA54866E}</Project>
<Name>Perspex.Input</Name>
<Name>Avalonia.Input</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Interactivity\Perspex.Interactivity.csproj">
<ProjectReference Include="..\..\src\Avalonia.Interactivity\Avalonia.Interactivity.csproj">
<Project>{6B0ED19D-A08B-461C-A9D9-A9EE40B0C06B}</Project>
<Name>Perspex.Interactivity</Name>
<Name>Avalonia.Interactivity</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Layout\Perspex.Layout.csproj">
<ProjectReference Include="..\..\src\Avalonia.Layout\Avalonia.Layout.csproj">
<Project>{42472427-4774-4C81-8AFF-9F27B8E31721}</Project>
<Name>Perspex.Layout</Name>
<Name>Avalonia.Layout</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.SceneGraph\Perspex.SceneGraph.csproj">
<ProjectReference Include="..\..\src\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
<Project>{EB582467-6ABB-43A1-B052-E981BA910E3A}</Project>
<Name>Perspex.SceneGraph</Name>
<Name>Avalonia.SceneGraph</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Styling\Perspex.Styling.csproj">
<ProjectReference Include="..\..\src\Avalonia.Styling\Avalonia.Styling.csproj">
<Project>{F1BAA01A-F176-4C6A-B39D-5B40BB1B148F}</Project>
<Name>Perspex.Styling</Name>
<Name>Avalonia.Styling</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Themes.Default\Perspex.Themes.Default.csproj">
<ProjectReference Include="..\..\src\Avalonia.Themes.Default\Avalonia.Themes.Default.csproj">
<Project>{3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}</Project>
<Name>Perspex.Themes.Default</Name>
<Name>Avalonia.Themes.Default</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Skia\Perspex.Skia.iOS\Perspex.Skia.iOS.csproj">
<ProjectReference Include="..\..\src\Skia\Avalonia.Skia.iOS\Avalonia.Skia.iOS.csproj">
<Project>{47BE08A7-5985-410B-9FFC-2264B8EA595F}</Project>
<Name>Perspex.Skia.iOS</Name>
<Name>Avalonia.Skia.iOS</Name>
<IsAppExtension>false</IsAppExtension>
<IsWatchApp>false</IsWatchApp>
</ProjectReference>

2
samples/ControlCatalog.iOS/Main.cs

@ -1,4 +1,4 @@
using UIKit;
using UIKit;
namespace ControlCatalog.iOS
{

2
samples/ControlCatalog.iOS/Properties/AssemblyInfo.cs

@ -1,4 +1,4 @@
using System.Reflection;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

2
samples/ControlCatalog.iOS/Resources/LaunchScreen.xib

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="6214" systemVersion="14A314h" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="6207" />

6
samples/ControlCatalog/App.xaml

@ -1,7 +1,7 @@
<Application xmlns="https://github.com/perspex">
<Application xmlns="https://github.com/avaloniaui">
<Application.Styles>
<StyleInclude Source="resm:Perspex.Themes.Default.DefaultTheme.xaml?assembly=Perspex.Themes.Default"/>
<StyleInclude Source="resm:Perspex.Themes.Default.Accents.BaseLight.xaml?assembly=Perspex.Themes.Default"/>
<StyleInclude Source="resm:Avalonia.Themes.Default.DefaultTheme.xaml?assembly=Avalonia.Themes.Default"/>
<StyleInclude Source="resm:Avalonia.Themes.Default.Accents.BaseLight.xaml?assembly=Avalonia.Themes.Default"/>
<Style Selector="TextBlock.h1">
<Setter Property="Foreground" Value="#212121"/>

2
samples/ControlCatalog/App.xaml.cs

@ -1,4 +1,4 @@
using Perspex;
using Avalonia;
namespace ControlCatalog

58
samples/ControlCatalog/ControlCatalog.csproj

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
@ -147,61 +147,61 @@
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Markup\Perspex.Markup.Xaml\Perspex.Markup.Xaml.csproj">
<ProjectReference Include="..\..\src\Markup\Avalonia.Markup.Xaml\Avalonia.Markup.Xaml.csproj">
<Project>{3E53A01A-B331-47F3-B828-4A5717E77A24}</Project>
<Name>Perspex.Markup.Xaml</Name>
<Name>Avalonia.Markup.Xaml</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Markup\Perspex.Markup\Perspex.Markup.csproj">
<ProjectReference Include="..\..\src\Markup\Avalonia.Markup\Avalonia.Markup.csproj">
<Project>{6417E941-21BC-467B-A771-0DE389353CE6}</Project>
<Name>Perspex.Markup</Name>
<Name>Avalonia.Markup</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Animation\Perspex.Animation.csproj">
<ProjectReference Include="..\..\src\Avalonia.Animation\Avalonia.Animation.csproj">
<Project>{D211E587-D8BC-45B9-95A4-F297C8FA5200}</Project>
<Name>Perspex.Animation</Name>
<Name>Avalonia.Animation</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Base\Perspex.Base.csproj">
<ProjectReference Include="..\..\src\Avalonia.Base\Avalonia.Base.csproj">
<Project>{B09B78D8-9B26-48B0-9149-D64A2F120F3F}</Project>
<Name>Perspex.Base</Name>
<Name>Avalonia.Base</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Controls\Perspex.Controls.csproj">
<ProjectReference Include="..\..\src\Avalonia.Controls\Avalonia.Controls.csproj">
<Project>{D2221C82-4A25-4583-9B43-D791E3F6820C}</Project>
<Name>Perspex.Controls</Name>
<Name>Avalonia.Controls</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Diagnostics\Perspex.Diagnostics.csproj">
<ProjectReference Include="..\..\src\Avalonia.Diagnostics\Avalonia.Diagnostics.csproj">
<Project>{7062AE20-5DCC-4442-9645-8195BDECE63E}</Project>
<Name>Perspex.Diagnostics</Name>
<Name>Avalonia.Diagnostics</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.HtmlRenderer\Perspex.HtmlRenderer.csproj">
<ProjectReference Include="..\..\src\Avalonia.HtmlRenderer\Avalonia.HtmlRenderer.csproj">
<Project>{5FB2B005-0A7F-4DAD-ADD4-3ED01444E63D}</Project>
<Name>Perspex.HtmlRenderer</Name>
<Name>Avalonia.HtmlRenderer</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Input\Perspex.Input.csproj">
<ProjectReference Include="..\..\src\Avalonia.Input\Avalonia.Input.csproj">
<Project>{62024B2D-53EB-4638-B26B-85EEAA54866E}</Project>
<Name>Perspex.Input</Name>
<Name>Avalonia.Input</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Interactivity\Perspex.Interactivity.csproj">
<ProjectReference Include="..\..\src\Avalonia.Interactivity\Avalonia.Interactivity.csproj">
<Project>{6B0ED19D-A08B-461C-A9D9-A9EE40B0C06B}</Project>
<Name>Perspex.Interactivity</Name>
<Name>Avalonia.Interactivity</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Layout\Perspex.Layout.csproj">
<ProjectReference Include="..\..\src\Avalonia.Layout\Avalonia.Layout.csproj">
<Project>{42472427-4774-4C81-8AFF-9F27B8E31721}</Project>
<Name>Perspex.Layout</Name>
<Name>Avalonia.Layout</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.ReactiveUI\Perspex.ReactiveUI.csproj">
<ProjectReference Include="..\..\src\Avalonia.ReactiveUI\Avalonia.ReactiveUI.csproj">
<Project>{6417B24E-49C2-4985-8DB2-3AB9D898EC91}</Project>
<Name>Perspex.ReactiveUI</Name>
<Name>Avalonia.ReactiveUI</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.SceneGraph\Perspex.SceneGraph.csproj">
<ProjectReference Include="..\..\src\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
<Project>{EB582467-6ABB-43A1-B052-E981BA910E3A}</Project>
<Name>Perspex.SceneGraph</Name>
<Name>Avalonia.SceneGraph</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Styling\Perspex.Styling.csproj">
<ProjectReference Include="..\..\src\Avalonia.Styling\Avalonia.Styling.csproj">
<Project>{F1BAA01A-F176-4C6A-B39D-5B40BB1B148F}</Project>
<Name>Perspex.Styling</Name>
<Name>Avalonia.Styling</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Themes.Default\Perspex.Themes.Default.csproj">
<ProjectReference Include="..\..\src\Avalonia.Themes.Default\Avalonia.Themes.Default.csproj">
<Project>{3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}</Project>
<Name>Perspex.Themes.Default</Name>
<Name>Avalonia.Themes.Default</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets" />

4
samples/ControlCatalog/MainWindow.xaml

@ -1,6 +1,6 @@
<Window xmlns="https://github.com/perspex"
<Window xmlns="https://github.com/avaloniaui"
xmlns:pages="clr-namespace:ControlCatalog.Pages;assembly=ControlCatalog"
Title="Perspex Control Gallery">
Title="Avalonia Control Gallery">
<TabControl Classes="sidebar">
<TabControl.Transition>
<CrossFade Duration="0.25"/>

8
samples/ControlCatalog/MainWindow.xaml.cs

@ -1,6 +1,6 @@
using Perspex;
using Perspex.Controls;
using Perspex.Markup.Xaml;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ControlCatalog
{
@ -17,7 +17,7 @@ namespace ControlCatalog
// TODO: iOS does not support dynamically loading assemblies
// so we must refer to this resource DLL statically. For
// now I am doing that here. But we need a better solution!!
var theme = new Perspex.Themes.Default.DefaultTheme();
var theme = new Avalonia.Themes.Default.DefaultTheme();
theme.FindResource("Button");

2
samples/ControlCatalog/Pages/BorderPage.xaml

@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/perspex">
<UserControl xmlns="https://github.com/avaloniaui">
<StackPanel Orientation="Vertical" Gap="4">
<TextBlock Classes="h1">Border</TextBlock>
<TextBlock Classes="h2">A control which decorates a child with a border and background</TextBlock>

6
samples/ControlCatalog/Pages/BorderPage.xaml.cs

@ -1,5 +1,5 @@
using Perspex.Controls;
using Perspex.Markup.Xaml;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages
{
@ -12,7 +12,7 @@ namespace ControlCatalog.Pages
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
AvaloniaXamlLoader.Load(this);
}
}
}

2
samples/ControlCatalog/Pages/ButtonPage.xaml

@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/perspex"
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<StackPanel Orientation="Vertical" Gap="4">
<TextBlock Classes="h1">Button</TextBlock>

6
samples/ControlCatalog/Pages/ButtonPage.xaml.cs

@ -1,5 +1,5 @@
using Perspex.Controls;
using Perspex.Markup.Xaml;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages
{
@ -12,7 +12,7 @@ namespace ControlCatalog.Pages
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
AvaloniaXamlLoader.Load(this);
}
}
}

2
samples/ControlCatalog/Pages/CanvasPage.xaml

@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/perspex">
<UserControl xmlns="https://github.com/avaloniaui">
<StackPanel Orientation="Vertical" Gap="4">
<TextBlock Classes="h1">Canvas</TextBlock>
<TextBlock Classes="h2">A panel which lays out its children by explicit coordinates</TextBlock>

6
samples/ControlCatalog/Pages/CanvasPage.xaml.cs

@ -1,5 +1,5 @@
using Perspex.Controls;
using Perspex.Markup.Xaml;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages
{
@ -12,7 +12,7 @@ namespace ControlCatalog.Pages
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
AvaloniaXamlLoader.Load(this);
}
}
}

2
samples/ControlCatalog/Pages/CarouselPage.xaml

@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/perspex">
<UserControl xmlns="https://github.com/avaloniaui">
<StackPanel Orientation="Vertical" Gap="4">
<TextBlock Classes="h1">Carousel</TextBlock>
<TextBlock Classes="h2">An items control that displays its items as pages that fill the control.</TextBlock>

10
samples/ControlCatalog/Pages/CarouselPage.xaml.cs

@ -1,7 +1,7 @@
using System;
using Perspex.Animation;
using Perspex.Controls;
using Perspex.Markup.Xaml;
using System;
using Avalonia.Animation;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages
{
@ -22,7 +22,7 @@ namespace ControlCatalog.Pages
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
AvaloniaXamlLoader.Load(this);
_carousel = this.FindControl<Carousel>("carousel");
_left = this.FindControl<Button>("left");
_right = this.FindControl<Button>("right");

2
samples/ControlCatalog/Pages/CheckBoxPage.xaml

@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/perspex">
<UserControl xmlns="https://github.com/avaloniaui">
<StackPanel Orientation="Vertical" Gap="4">
<TextBlock Classes="h1">CheckBox</TextBlock>
<TextBlock Classes="h2">A check box control</TextBlock>

6
samples/ControlCatalog/Pages/CheckBoxPage.xaml.cs

@ -1,5 +1,5 @@
using Perspex.Controls;
using Perspex.Markup.Xaml;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages
{
@ -12,7 +12,7 @@ namespace ControlCatalog.Pages
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
AvaloniaXamlLoader.Load(this);
}
}
}

2
samples/ControlCatalog/Pages/DropDownPage.xaml

@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/perspex">
<UserControl xmlns="https://github.com/avaloniaui">
<StackPanel Orientation="Vertical" Gap="4">
<TextBlock Classes="h1">DropDown</TextBlock>
<TextBlock Classes="h2">A drop-down list.</TextBlock>

6
samples/ControlCatalog/Pages/DropDownPage.xaml.cs

@ -1,5 +1,5 @@
using Perspex.Controls;
using Perspex.Markup.Xaml;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages
{
@ -12,7 +12,7 @@ namespace ControlCatalog.Pages
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
AvaloniaXamlLoader.Load(this);
}
}
}

2
samples/ControlCatalog/Pages/ExpanderPage.xaml

@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/perspex">
<UserControl xmlns="https://github.com/avaloniaui">
<StackPanel Orientation="Vertical" Gap="4">
<TextBlock Classes="h1">Expander</TextBlock>
<TextBlock Classes="h2">Expands to show nested content</TextBlock>

6
samples/ControlCatalog/Pages/ExpanderPage.xaml.cs

@ -1,5 +1,5 @@
using Perspex.Controls;
using Perspex.Markup.Xaml;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages
{
@ -12,7 +12,7 @@ namespace ControlCatalog.Pages
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
AvaloniaXamlLoader.Load(this);
}
}
}

2
samples/ControlCatalog/Pages/ImagePage.xaml

@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/perspex">
<UserControl xmlns="https://github.com/avaloniaui">
<StackPanel Orientation="Vertical" Gap="4">
<TextBlock Classes="h1">Image</TextBlock>
<TextBlock Classes="h2">Displays an image</TextBlock>

6
samples/ControlCatalog/Pages/ImagePage.xaml.cs

@ -1,5 +1,5 @@
using Perspex.Controls;
using Perspex.Markup.Xaml;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages
{
@ -12,7 +12,7 @@ namespace ControlCatalog.Pages
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
AvaloniaXamlLoader.Load(this);
}
}
}

2
samples/ControlCatalog/Pages/LayoutTransformControlPage.xaml

@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/perspex"
<UserControl xmlns="https://github.com/avaloniaui"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DockPanel>
<Grid ColumnDefinitions="Auto,*" RowDefinitions="Auto" Margin="16" DockPanel.Dock="Top">

6
samples/ControlCatalog/Pages/LayoutTransformControlPage.xaml.cs

@ -1,5 +1,5 @@
using Perspex.Controls;
using Perspex.Markup.Xaml;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages
{
@ -12,7 +12,7 @@ namespace ControlCatalog.Pages
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
AvaloniaXamlLoader.Load(this);
}
}
}

2
samples/ControlCatalog/Pages/MenuPage.xaml

@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/perspex">
<UserControl xmlns="https://github.com/avaloniaui">
<StackPanel Orientation="Vertical" Gap="4">
<TextBlock Classes="h1">Menu</TextBlock>
<TextBlock Classes="h2">A window menu</TextBlock>

6
samples/ControlCatalog/Pages/MenuPage.xaml.cs

@ -1,5 +1,5 @@
using Perspex.Controls;
using Perspex.Markup.Xaml;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages
{
@ -12,7 +12,7 @@ namespace ControlCatalog.Pages
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
AvaloniaXamlLoader.Load(this);
}
}
}

2
samples/ControlCatalog/Pages/RadioButtonPage.xaml

@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/perspex">
<UserControl xmlns="https://github.com/avaloniaui">
<StackPanel Orientation="Vertical" Gap="4">
<TextBlock Classes="h1">RadioButton</TextBlock>
<TextBlock Classes="h2">Allows the selection of a single option of many</TextBlock>

6
samples/ControlCatalog/Pages/RadioButtonPage.xaml.cs

@ -1,5 +1,5 @@
using Perspex.Controls;
using Perspex.Markup.Xaml;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages
{
@ -12,7 +12,7 @@ namespace ControlCatalog.Pages
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
AvaloniaXamlLoader.Load(this);
}
}
}

2
samples/ControlCatalog/Pages/SliderPage.xaml

@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/perspex">
<UserControl xmlns="https://github.com/avaloniaui">
<StackPanel Orientation="Vertical" Gap="4">
<TextBlock Classes="h1">Slider</TextBlock>
<TextBlock Classes="h2">A control that lets the user select from a range of values by moving a Thumb control along a Track.</TextBlock>

6
samples/ControlCatalog/Pages/SliderPage.xaml.cs

@ -1,5 +1,5 @@
using Perspex.Controls;
using Perspex.Markup.Xaml;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages
{
@ -12,7 +12,7 @@ namespace ControlCatalog.Pages
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
AvaloniaXamlLoader.Load(this);
}
}
}

2
samples/ControlCatalog/Pages/TextBoxPage.xaml

@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/perspex">
<UserControl xmlns="https://github.com/avaloniaui">
<StackPanel Orientation="Vertical" Gap="4">
<TextBlock Classes="h1">TextBox</TextBlock>
<TextBlock Classes="h2">A control into which the user can input text</TextBlock>

6
samples/ControlCatalog/Pages/TextBoxPage.xaml.cs

@ -1,5 +1,5 @@
using Perspex.Controls;
using Perspex.Markup.Xaml;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages
{
@ -12,7 +12,7 @@ namespace ControlCatalog.Pages
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
AvaloniaXamlLoader.Load(this);
}
}
}

2
samples/ControlCatalog/Pages/ToolTipPage.xaml

@ -1,4 +1,4 @@
<UserControl xmlns="https://github.com/perspex">
<UserControl xmlns="https://github.com/avaloniaui">
<StackPanel Orientation="Vertical" Gap="4">
<TextBlock Classes="h1">ToolTip</TextBlock>
<TextBlock Classes="h2">A control which pops up a hint when a control is hovered</TextBlock>

6
samples/ControlCatalog/Pages/ToolTipPage.xaml.cs

@ -1,5 +1,5 @@
using Perspex.Controls;
using Perspex.Markup.Xaml;
using Avalonia.Controls;
using Avalonia.Markup.Xaml;
namespace ControlCatalog.Pages
{
@ -12,7 +12,7 @@ namespace ControlCatalog.Pages
private void InitializeComponent()
{
PerspexXamlLoader.Load(this);
AvaloniaXamlLoader.Load(this);
}
}
}

4
samples/ControlCatalog/Program.cs

@ -1,8 +1,8 @@
using Perspex.Logging.Serilog;
using Avalonia.Logging.Serilog;
using Serilog;
using System;
using System.Linq;
using Perspex;
using Avalonia;
namespace ControlCatalog
{

2
samples/ControlCatalog/Properties/AssemblyInfo.cs

@ -1,4 +1,4 @@
using System.Reflection;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;

2
samples/ControlCatalog/SideBar.xaml

@ -1,4 +1,4 @@
<Styles xmlns="https://github.com/perspex">
<Styles xmlns="https://github.com/avaloniaui">
<Style Selector="TabControl.sidebar">
<Setter Property="Template">
<ControlTemplate>

30
samples/TestApplication/Program.cs

@ -1,24 +1,24 @@
// Copyright (c) The Perspex Project. All rights reserved.
// Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
using System.Linq;
using System.IO;
using System.Reactive.Linq;
using Perspex;
using Perspex.Animation;
using Perspex.Collections;
using Perspex.Controls;
using Perspex.Controls.Html;
using Perspex.Controls.Primitives;
using Perspex.Controls.Shapes;
using Perspex.Controls.Templates;
using Perspex.Diagnostics;
using Perspex.Layout;
using Perspex.Media;
using Perspex.Media.Imaging;
#if PERSPEX_GTK
using Perspex.Gtk;
using Avalonia;
using Avalonia.Animation;
using Avalonia.Collections;
using Avalonia.Controls;
using Avalonia.Controls.Html;
using Avalonia.Controls.Primitives;
using Avalonia.Controls.Shapes;
using Avalonia.Controls.Templates;
using Avalonia.Diagnostics;
using Avalonia.Layout;
using Avalonia.Media;
using Avalonia.Media.Imaging;
#if AVALONIA_GTK
using Avalonia.Gtk;
#endif
using ReactiveUI;

2
samples/TestApplication/Properties/AssemblyInfo.cs

@ -1,4 +1,4 @@
// Copyright (c) The Perspex Project. All rights reserved.
// Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System.Reflection;

80
samples/TestApplication/TestApplication.csproj

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
<PropertyGroup>
@ -78,86 +78,86 @@
<None Include="packages.config" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Gtk\Perspex.Cairo\Perspex.Cairo.csproj">
<ProjectReference Include="..\..\src\Gtk\Avalonia.Cairo\Avalonia.Cairo.csproj">
<Project>{FB05AC90-89BA-4F2F-A924-F37875FB547C}</Project>
<Name>Perspex.Cairo</Name>
<Name>Avalonia.Cairo</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Gtk\Perspex.Gtk\Perspex.Gtk.csproj">
<ProjectReference Include="..\..\src\Gtk\Avalonia.Gtk\Avalonia.Gtk.csproj">
<Project>{54f237d5-a70a-4752-9656-0c70b1a7b047}</Project>
<Name>Perspex.Gtk</Name>
<Name>Avalonia.Gtk</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Markup\Perspex.Markup.Xaml\Perspex.Markup.Xaml.csproj">
<ProjectReference Include="..\..\src\Markup\Avalonia.Markup.Xaml\Avalonia.Markup.Xaml.csproj">
<Project>{3e53a01a-b331-47f3-b828-4a5717e77a24}</Project>
<Name>Perspex.Markup.Xaml</Name>
<Name>Avalonia.Markup.Xaml</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Markup\Perspex.Markup\Perspex.Markup.csproj">
<ProjectReference Include="..\..\src\Markup\Avalonia.Markup\Avalonia.Markup.csproj">
<Project>{6417e941-21bc-467b-a771-0de389353ce6}</Project>
<Name>Perspex.Markup</Name>
<Name>Avalonia.Markup</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Animation\Perspex.Animation.csproj">
<ProjectReference Include="..\..\src\Avalonia.Animation\Avalonia.Animation.csproj">
<Project>{D211E587-D8BC-45B9-95A4-F297C8FA5200}</Project>
<Name>Perspex.Animation</Name>
<Name>Avalonia.Animation</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Base\Perspex.Base.csproj">
<ProjectReference Include="..\..\src\Avalonia.Base\Avalonia.Base.csproj">
<Project>{B09B78D8-9B26-48B0-9149-D64A2F120F3F}</Project>
<Name>Perspex.Base</Name>
<Name>Avalonia.Base</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Controls\Perspex.Controls.csproj">
<ProjectReference Include="..\..\src\Avalonia.Controls\Avalonia.Controls.csproj">
<Project>{D2221C82-4A25-4583-9B43-D791E3F6820C}</Project>
<Name>Perspex.Controls</Name>
<Name>Avalonia.Controls</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.DesignerSupport\Perspex.DesignerSupport.csproj">
<ProjectReference Include="..\..\src\Avalonia.DesignerSupport\Avalonia.DesignerSupport.csproj">
<Project>{799a7bb5-3c2c-48b6-85a7-406a12c420da}</Project>
<Name>Perspex.DesignerSupport</Name>
<Name>Avalonia.DesignerSupport</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Diagnostics\Perspex.Diagnostics.csproj">
<ProjectReference Include="..\..\src\Avalonia.Diagnostics\Avalonia.Diagnostics.csproj">
<Project>{7062AE20-5DCC-4442-9645-8195BDECE63E}</Project>
<Name>Perspex.Diagnostics</Name>
<Name>Avalonia.Diagnostics</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.HtmlRenderer\Perspex.HtmlRenderer.csproj">
<ProjectReference Include="..\..\src\Avalonia.HtmlRenderer\Avalonia.HtmlRenderer.csproj">
<Project>{5FB2B005-0A7F-4DAD-ADD4-3ED01444E63D}</Project>
<Name>Perspex.HtmlRenderer</Name>
<Name>Avalonia.HtmlRenderer</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Input\Perspex.Input.csproj">
<ProjectReference Include="..\..\src\Avalonia.Input\Avalonia.Input.csproj">
<Project>{62024B2D-53EB-4638-B26B-85EEAA54866E}</Project>
<Name>Perspex.Input</Name>
<Name>Avalonia.Input</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Interactivity\Perspex.Interactivity.csproj">
<ProjectReference Include="..\..\src\Avalonia.Interactivity\Avalonia.Interactivity.csproj">
<Project>{6B0ED19D-A08B-461C-A9D9-A9EE40B0C06B}</Project>
<Name>Perspex.Interactivity</Name>
<Name>Avalonia.Interactivity</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Layout\Perspex.Layout.csproj">
<ProjectReference Include="..\..\src\Avalonia.Layout\Avalonia.Layout.csproj">
<Project>{42472427-4774-4C81-8AFF-9F27B8E31721}</Project>
<Name>Perspex.Layout</Name>
<Name>Avalonia.Layout</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.ReactiveUI\Perspex.ReactiveUI.csproj">
<ProjectReference Include="..\..\src\Avalonia.ReactiveUI\Avalonia.ReactiveUI.csproj">
<Project>{6417B24E-49C2-4985-8DB2-3AB9D898EC91}</Project>
<Name>Perspex.ReactiveUI</Name>
<Name>Avalonia.ReactiveUI</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.SceneGraph\Perspex.SceneGraph.csproj">
<ProjectReference Include="..\..\src\Avalonia.SceneGraph\Avalonia.SceneGraph.csproj">
<Project>{EB582467-6ABB-43A1-B052-E981BA910E3A}</Project>
<Name>Perspex.SceneGraph</Name>
<Name>Avalonia.SceneGraph</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Styling\Perspex.Styling.csproj">
<ProjectReference Include="..\..\src\Avalonia.Styling\Avalonia.Styling.csproj">
<Project>{F1BAA01A-F176-4C6A-B39D-5B40BB1B148F}</Project>
<Name>Perspex.Styling</Name>
<Name>Avalonia.Styling</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Perspex.Themes.Default\Perspex.Themes.Default.csproj">
<ProjectReference Include="..\..\src\Avalonia.Themes.Default\Avalonia.Themes.Default.csproj">
<Project>{3E10A5FA-E8DA-48B1-AD44-6A5B6CB7750F}</Project>
<Name>Perspex.Themes.Default</Name>
<Name>Avalonia.Themes.Default</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Windows\Perspex.Direct2D1\Perspex.Direct2D1.csproj">
<ProjectReference Include="..\..\src\Windows\Avalonia.Direct2D1\Avalonia.Direct2D1.csproj">
<Project>{3E908F67-5543-4879-A1DC-08EACE79B3CD}</Project>
<Name>Perspex.Direct2D1</Name>
<Name>Avalonia.Direct2D1</Name>
</ProjectReference>
<ProjectReference Include="..\..\src\Windows\Perspex.Win32\Perspex.Win32.csproj">
<ProjectReference Include="..\..\src\Windows\Avalonia.Win32\Avalonia.Win32.csproj">
<Project>{811A76CF-1CF6-440F-963B-BBE31BD72A82}</Project>
<Name>Perspex.Win32</Name>
<Name>Avalonia.Win32</Name>
</ProjectReference>
</ItemGroup>
<Import Project="..\TestApplicationShared\TestApplicationShared.projitems" Label="Shared" />
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="..\..\src\Shared\perspex.platform.targets" />
<Import Project="..\..\src\Shared\avalonia.platform.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

28
samples/TestApplicationShared/App.cs

@ -1,17 +1,17 @@
// Copyright (c) The Perspex Project. All rights reserved.
// Copyright (c) The Avalonia Project. All rights reserved.
// Licensed under the MIT license. See licence.md file in the project root for full license information.
using System;
using Perspex;
using Perspex.Controls;
using Perspex.Controls.Templates;
using Perspex.Markup.Xaml;
using Perspex.Styling;
using Perspex.Themes.Default;
using Perspex.Diagnostics;
using Perspex.Platform;
using Perspex.Shared.PlatformSupport;
using Perspex.Media;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Templates;
using Avalonia.Markup.Xaml;
using Avalonia.Styling;
using Avalonia.Themes.Default;
using Avalonia.Diagnostics;
using Avalonia.Platform;
using Avalonia.Shared.PlatformSupport;
using Avalonia.Media;
namespace TestApplication
{
@ -30,9 +30,9 @@ namespace TestApplication
{
Styles.Add(new DefaultTheme());
var loader = new PerspexXamlLoader();
var loader = new AvaloniaXamlLoader();
var baseLight = (IStyle)loader.Load(
new Uri("resm:Perspex.Themes.Default.Accents.BaseLight.xaml?assembly=Perspex.Themes.Default"));
new Uri("resm:Avalonia.Themes.Default.Accents.BaseLight.xaml?assembly=Avalonia.Themes.Default"));
Styles.Add(baseLight);
Styles.Add(new SampleTabStyle());
@ -55,7 +55,7 @@ namespace TestApplication
{
Window window = new Window
{
Title = "Perspex Test Application",
Title = "Avalonia Test Application",
Background = Brushes.Red,
Content = new StackPanel
{

16
samples/TestApplicationShared/GalleryStyle.cs

@ -1,10 +1,10 @@
using Perspex;
using Perspex.Controls;
using Perspex.Controls.Presenters;
using Perspex.Controls.Primitives;
using Perspex.Controls.Templates;
using Perspex.Media;
using Perspex.Styling;
using Avalonia;
using Avalonia.Controls;
using Avalonia.Controls.Presenters;
using Avalonia.Controls.Primitives;
using Avalonia.Controls.Templates;
using Avalonia.Media;
using Avalonia.Styling;
using System;
using System.Collections.Generic;
using System.Linq;
@ -67,7 +67,7 @@ namespace TestApplication
Padding = new Thickness(10),
Child = new TextBlock
{
VerticalAlignment = Perspex.Layout.VerticalAlignment.Center,
VerticalAlignment = Avalonia.Layout.VerticalAlignment.Center,
Text = x
}
})

2
samples/TestApplicationShared/Item.cs

@ -1,4 +1,4 @@
namespace TestApplication
namespace TestApplication
{
internal class Item
{

52
samples/TestApplicationShared/MainWindow.cs

@ -1,35 +1,35 @@
using System;
using System;
using System.Collections.Generic;
using System.IO;
using System.Reactive.Linq;
using System.Text;
using Perspex;
using Perspex.Animation;
using Perspex.Collections;
using Perspex.Controls;
using Perspex.Controls.Html;
using Perspex.Controls.Primitives;
using Perspex.Controls.Shapes;
using Perspex.Controls.Templates;
using Perspex.Data;
using Perspex.Diagnostics;
using Perspex.Layout;
using Perspex.Media;
using Perspex.Media.Imaging;
using Perspex.Platform;
using Perspex.Threading;
using Avalonia;
using Avalonia.Animation;
using Avalonia.Collections;
using Avalonia.Controls;
using Avalonia.Controls.Html;
using Avalonia.Controls.Primitives;
using Avalonia.Controls.Shapes;
using Avalonia.Controls.Templates;
using Avalonia.Data;
using Avalonia.Diagnostics;
using Avalonia.Layout;
using Avalonia.Media;
using Avalonia.Media.Imaging;
using Avalonia.Platform;
using Avalonia.Threading;
using TestApplication;
namespace TestApplication
{
class MainWindow
{
private static readonly PerspexList<Node> s_treeData = new PerspexList<Node>
private static readonly AvaloniaList<Node> s_treeData = new AvaloniaList<Node>
{
new Node
{
Name = "Root 1",
Children = new PerspexList<Node>
Children = new AvaloniaList<Node>
{
new Node
{
@ -38,7 +38,7 @@ namespace TestApplication
new Node
{
Name = "Child 2",
Children = new PerspexList<Node>
Children = new AvaloniaList<Node>
{
new Node
{
@ -62,7 +62,7 @@ namespace TestApplication
},
};
private static readonly PerspexList<Item> s_listBoxData = new PerspexList<Item>
private static readonly AvaloniaList<Item> s_listBoxData = new AvaloniaList<Item>
{
new Item { Name = "Item 1", Value = "Item 1 Value" },
new Item { Name = "Item 2", Value = "Item 2 Value" },
@ -82,7 +82,7 @@ namespace TestApplication
Window window = new Window
{
Title = "Perspex Test Application",
Title = "Avalonia Test Application",
//Width = 900,
//Height = 480,
Content = (container = new TabControl
@ -359,7 +359,7 @@ namespace TestApplication
static Stream GetImage(string path)
{
return PerspexLocator.Current.GetService<IAssetLoader>().Open(new Uri("resm:" + RootNamespace + "." + path));
return AvaloniaLocator.Current.GetService<IAssetLoader>().Open(new Uri("resm:" + RootNamespace + "." + path));
}
private static TabItem ListsTab()
@ -461,7 +461,7 @@ namespace TestApplication
{
VerticalAlignment = VerticalAlignment.Center,
Padding = new Thickness(20),
Content = new Perspex.Controls.Shapes.Path
Content = new Avalonia.Controls.Shapes.Path
{
Data = StreamGeometry.Parse("M4,11V13H16L10.5,18.5L11.92,19.92L19.84,12L11.92,4.08L10.5,5.5L16,11H4Z"),
Fill = Brushes.Black
@ -472,7 +472,7 @@ namespace TestApplication
{
VerticalAlignment = VerticalAlignment.Center,
Padding = new Thickness(20),
Content = new Perspex.Controls.Shapes.Path
Content = new Avalonia.Controls.Shapes.Path
{
Data = StreamGeometry.Parse("M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z"),
Fill = Brushes.Black
@ -707,7 +707,7 @@ namespace TestApplication
StartPoint = new Point(120, 185),
EndPoint = new Point(30, 115)
},
new Perspex.Controls.Shapes.Path
new Avalonia.Controls.Shapes.Path
{
Fill = Brushes.Orange,
Data = StreamGeometry.Parse("M 30,250 c 50,0 50,-50 c 50,0 50,50 h -50 v 50 l -50,-50 Z"),
@ -810,7 +810,7 @@ namespace TestApplication
Radius = 75
}
},
new Perspex.Controls.Shapes.Path
new Avalonia.Controls.Shapes.Path
{
Data =
StreamGeometry.Parse(

6
samples/TestApplicationShared/Node.cs

@ -1,4 +1,4 @@
using Perspex.Collections;
using Avalonia.Collections;
namespace TestApplication
{
@ -6,11 +6,11 @@ namespace TestApplication
{
public Node()
{
Children = new PerspexList<Node>();
Children = new AvaloniaList<Node>();
}
public string Name { get; set; }
public PerspexList<Node> Children { get; set; }
public AvaloniaList<Node> Children { get; set; }
}
}

Some files were not shown because too many files changed in this diff

Loading…
Cancel
Save