Bläddra i källkod

Enable compiled bindings by default and fix all the usages + adjust some namespaces

Max Katz 2 år sedan
förälder
incheckning
fa0cea97fe
100 ändrade filer med 345 tillägg och 306 borttagningar
  1. 1 0
      build/BuildTargets.targets
  2. 3 3
      samples/BindingDemo/MainWindow.xaml
  3. 4 2
      samples/BindingDemo/TestItemView.xaml
  4. 0 1
      samples/ControlCatalog/App.xaml
  5. 0 15
      samples/ControlCatalog/ControlCatalog.csproj
  6. 8 3
      samples/ControlCatalog/DecoratedWindow.xaml
  7. 5 3
      samples/ControlCatalog/MainView.xaml
  8. 6 5
      samples/ControlCatalog/MainWindow.xaml
  9. 20 0
      samples/ControlCatalog/Models/StateData.cs
  10. 3 3
      samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml
  11. 1 19
      samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml.cs
  12. 0 1
      samples/ControlCatalog/Pages/BorderPage.xaml
  13. 1 1
      samples/ControlCatalog/Pages/ButtonSpinnerPage.xaml
  14. 1 1
      samples/ControlCatalog/Pages/CalendarDatePickerPage.xaml
  15. 1 3
      samples/ControlCatalog/Pages/ColorPickerPage.xaml
  16. 5 3
      samples/ControlCatalog/Pages/ComboBoxPage.xaml
  17. 2 2
      samples/ControlCatalog/Pages/CompositionPage.axaml
  18. 4 2
      samples/ControlCatalog/Pages/ContextFlyoutPage.xaml
  19. 4 2
      samples/ControlCatalog/Pages/ContextMenuPage.xaml
  20. 4 2
      samples/ControlCatalog/Pages/CursorPage.xaml
  21. 1 1
      samples/ControlCatalog/Pages/DataGridPage.xaml
  22. 1 1
      samples/ControlCatalog/Pages/DateTimePickerPage.xaml
  23. 3 1
      samples/ControlCatalog/Pages/ExpanderPage.xaml
  24. 5 3
      samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml
  25. 2 2
      samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml.cs
  26. 3 1
      samples/ControlCatalog/Pages/LabelsPage.axaml
  27. 3 1
      samples/ControlCatalog/Pages/ListBoxPage.xaml
  28. 5 3
      samples/ControlCatalog/Pages/MenuPage.xaml
  29. 3 1
      samples/ControlCatalog/Pages/NotificationsPage.xaml
  30. 7 4
      samples/ControlCatalog/Pages/NumericUpDownPage.xaml
  31. 3 0
      samples/ControlCatalog/Pages/NumericUpDownPage.xaml.cs
  32. 1 1
      samples/ControlCatalog/Pages/OpenGlPage.xaml
  33. 3 1
      samples/ControlCatalog/Pages/PlatformInfoPage.xaml
  34. 1 1
      samples/ControlCatalog/Pages/ProgressBarPage.xaml
  35. 3 1
      samples/ControlCatalog/Pages/ScrollViewerPage.xaml
  36. 1 1
      samples/ControlCatalog/Pages/SliderPage.xaml
  37. 4 2
      samples/ControlCatalog/Pages/SplitViewPage.xaml
  38. 6 4
      samples/ControlCatalog/Pages/TabControlPage.xaml
  39. 5 27
      samples/ControlCatalog/Pages/TabControlPage.xaml.cs
  40. 6 4
      samples/ControlCatalog/Pages/TabStripPage.xaml
  41. 17 23
      samples/ControlCatalog/Pages/TabStripPage.xaml.cs
  42. 1 1
      samples/ControlCatalog/Pages/TextBoxPage.xaml
  43. 1 2
      samples/ControlCatalog/Pages/TransitioningContentControlPage.axaml
  44. 3 1
      samples/ControlCatalog/Pages/TreeViewPage.xaml
  45. 1 1
      samples/ControlCatalog/Pages/ViewboxPage.xaml
  46. 3 1
      samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml
  47. 10 10
      samples/ControlCatalog/ViewModels/CursorPageViewModel.cs
  48. 22 22
      samples/ControlCatalog/ViewModels/ItemsRepeaterPageViewModel.cs
  49. 26 0
      samples/ControlCatalog/ViewModels/TabControlPageViewModel.cs
  50. 3 1
      samples/ControlCatalog/Views/CustomNotificationView.xaml
  51. 3 1
      samples/IntegrationTestApp/MainWindow.axaml
  52. 1 0
      samples/IntegrationTestApp/ShowWindowTest.axaml
  53. 0 1
      samples/MobileSandbox/App.xaml
  54. 3 1
      samples/MobileSandbox/MainView.xaml
  55. 4 4
      samples/MobileSandbox/Views/CustomNotificationView.xaml
  56. 4 2
      samples/RenderDemo/MainWindow.xaml
  57. 3 1
      samples/RenderDemo/Pages/AnimationsPage.xaml
  58. 1 1
      samples/RenderDemo/Pages/CustomAnimatorPage.xaml
  59. 1 1
      samples/RenderDemo/Pages/GlyphRunPage.xaml
  60. 1 1
      samples/RenderDemo/Pages/LineBoundsPage.xaml
  61. 3 1
      samples/RenderDemo/Pages/Transform3DPage.axaml
  62. 2 0
      samples/RenderDemo/Pages/TransitionsPage.xaml
  63. 3 3
      samples/SampleControls/HamburgerMenu/HamburgerMenu.xaml
  64. 3 1
      samples/VirtualizationDemo/MainWindow.xaml
  65. 1 4
      src/Avalonia.Controls.ColorPicker/Themes/Fluent/ColorPicker.xaml
  66. 1 2
      src/Avalonia.Controls.ColorPicker/Themes/Fluent/ColorPreviewer.xaml
  67. 1 2
      src/Avalonia.Controls.ColorPicker/Themes/Fluent/ColorSlider.xaml
  68. 1 2
      src/Avalonia.Controls.ColorPicker/Themes/Fluent/ColorSpectrum.xaml
  69. 2 3
      src/Avalonia.Controls.ColorPicker/Themes/Fluent/ColorView.xaml
  70. 1 2
      src/Avalonia.Controls.ColorPicker/Themes/Fluent/Fluent.xaml
  71. 1 4
      src/Avalonia.Controls.ColorPicker/Themes/Simple/ColorPicker.xaml
  72. 1 2
      src/Avalonia.Controls.ColorPicker/Themes/Simple/ColorPreviewer.xaml
  73. 1 2
      src/Avalonia.Controls.ColorPicker/Themes/Simple/ColorSlider.xaml
  74. 1 2
      src/Avalonia.Controls.ColorPicker/Themes/Simple/ColorSpectrum.xaml
  75. 2 3
      src/Avalonia.Controls.ColorPicker/Themes/Simple/ColorView.xaml
  76. 1 2
      src/Avalonia.Controls.ColorPicker/Themes/Simple/Simple.xaml
  77. 3 3
      src/Avalonia.Controls.DataGrid/Themes/Fluent.xaml
  78. 3 2
      src/Avalonia.Controls.DataGrid/Themes/Simple.xaml
  79. 0 1
      src/Avalonia.Diagnostics/Diagnostics/Controls/FilterTextBox.axaml
  80. 1 1
      src/Avalonia.Diagnostics/Diagnostics/Controls/ThicknessEditor.axaml
  81. 2 2
      src/Avalonia.Diagnostics/Diagnostics/ViewModels/MainViewModel.cs
  82. 3 1
      src/Avalonia.Diagnostics/Diagnostics/Views/ConsoleView.xaml
  83. 16 12
      src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml
  84. 5 5
      src/Avalonia.Diagnostics/Diagnostics/Views/EventsPageView.xaml
  85. 4 3
      src/Avalonia.Diagnostics/Diagnostics/Views/LayoutExplorerView.axaml
  86. 5 3
      src/Avalonia.Diagnostics/Diagnostics/Views/MainView.xaml
  87. 5 3
      src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml
  88. 4 3
      src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml
  89. 3 1
      src/Avalonia.Dialogs/AboutAvaloniaDialog.xaml
  90. 2 5
      src/Avalonia.Dialogs/InternalViewModelBase.cs
  91. 2 1
      src/Avalonia.Dialogs/ManagedFileChooserFilterViewModel.cs
  92. 2 1
      src/Avalonia.Dialogs/ManagedFileChooserItemViewModel.cs
  93. 1 1
      src/Avalonia.Dialogs/ManagedFileChooserNavigationItem.cs
  94. 2 1
      src/Avalonia.Dialogs/ManagedFileChooserViewModel.cs
  95. 2 3
      src/Avalonia.Themes.Fluent/Controls/ButtonSpinner.xaml
  96. 1 2
      src/Avalonia.Themes.Fluent/Controls/CalendarDatePicker.xaml
  97. 3 5
      src/Avalonia.Themes.Fluent/Controls/CalendarItem.xaml
  98. 1 1
      src/Avalonia.Themes.Fluent/Controls/ComboBox.xaml
  99. 2 3
      src/Avalonia.Themes.Fluent/Controls/DataValidationErrors.xaml
  100. 1 2
      src/Avalonia.Themes.Fluent/Controls/DatePicker.xaml

+ 1 - 0
build/BuildTargets.targets

@@ -3,6 +3,7 @@
     <AvaloniaBuildTasksLocation>$(MSBuildThisFileDirectory)\..\src\Avalonia.Build.Tasks\bin\$(Configuration)\netstandard2.0\Avalonia.Build.Tasks.dll</AvaloniaBuildTasksLocation>
     <AvaloniaUseExternalMSBuild>true</AvaloniaUseExternalMSBuild>
     <AvaloniaXamlIlVerifyIl>true</AvaloniaXamlIlVerifyIl>
+    <AvaloniaUseCompiledBindingsByDefault>true</AvaloniaUseCompiledBindingsByDefault>
   </PropertyGroup>
   <Import Project="$(MSBuildThisFileDirectory)\..\packages\Avalonia\AvaloniaBuildTasks.props"/>
   <Import Project="$(MSBuildThisFileDirectory)\..\packages\Avalonia\AvaloniaBuildTasks.targets"/>

+ 3 - 3
samples/BindingDemo/MainWindow.xaml

@@ -1,8 +1,8 @@
 <Window xmlns="https://github.com/avaloniaui"
         xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
         x:Class="BindingDemo.MainWindow"
-        xmlns:vm="clr-namespace:BindingDemo.ViewModels" 
-        xmlns:local="clr-namespace:BindingDemo"
+        xmlns:vm="using:BindingDemo.ViewModels" 
+        xmlns:local="using:BindingDemo"
         Title="AvaloniaUI Bindings Test"
         Width="800"
         Height="600"
@@ -81,7 +81,7 @@
           <TextBlock FontSize="16" Text="Multiple"/>
           <ListBox Items="{Binding Items}" SelectionMode="Multiple" Selection="{Binding Selection}"/>
         </StackPanel>
-        <ContentControl Content="{Binding SelectedItems[0]}">
+        <ContentControl Content="{ReflectionBinding Selection.SelectedItems[0]}">
           <ContentControl.DataTemplates>
             <DataTemplate DataType="vm:TestItem">
               <local:TestItemView></local:TestItemView>

+ 4 - 2
samples/BindingDemo/TestItemView.xaml

@@ -1,8 +1,10 @@
 <UserControl xmlns="https://github.com/avaloniaui"
         xmlns:x='http://schemas.microsoft.com/winfx/2006/xaml'
-        x:Class="BindingDemo.TestItemView">
+        xmlns:viewModels="using:BindingDemo.ViewModels"
+        x:Class="BindingDemo.TestItemView"
+        x:DataType="viewModels:TestItem">
   <StackPanel>
     <TextBlock Classes="h1" Text="{Binding StringValue}"/>
     <TextBox Text="{Binding Detail}" AcceptsReturn="True"/>
   </StackPanel>
-</UserControl>
+</UserControl>

+ 0 - 1
samples/ControlCatalog/App.xaml

@@ -2,7 +2,6 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:vm="using:ControlCatalog.ViewModels"
              x:DataType="vm:ApplicationViewModel"
-             x:CompileBindings="True"
              Name="Avalonia ControlCatalog"
              x:Class="ControlCatalog.App">
   <Application.Resources>

+ 0 - 15
samples/ControlCatalog/ControlCatalog.csproj

@@ -14,9 +14,6 @@
     <AvaloniaResource Include="Assets\*" />
     <AvaloniaResource Include="Assets\Fonts\*" />
   </ItemGroup>
-  <ItemGroup>
-    <None Remove="Pages\NativeEmbedPage.xaml" />
-  </ItemGroup>
   <ItemGroup>
     <EmbeddedResource Include="Assets\Fonts\SourceSansPro-Bold.ttf" />
     <EmbeddedResource Include="Assets\Fonts\SourceSansPro-BoldItalic.ttf" />
@@ -35,17 +32,5 @@
     <ProjectReference Include="..\SampleControls\ControlSamples.csproj" />
   </ItemGroup>
 
-  <ItemGroup>
-    <AvaloniaResource Update="Pages\NativeEmbedPage.xaml">
-      <Generator>MSBuild:Compile</Generator>
-    </AvaloniaResource>
-  </ItemGroup>
-
-  <ItemGroup>
-    <Compile Update="Pages\NativeEmbedPage.xaml.cs">
-      <DependentUpon>%(Filename)</DependentUpon>
-    </Compile>
-  </ItemGroup>
-
   <Import Project="..\..\build\BuildTargets.targets" />
 </Project>

+ 8 - 3
samples/ControlCatalog/DecoratedWindow.xaml

@@ -2,7 +2,7 @@
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         x:Class="ControlCatalog.DecoratedWindow"
         Title="Avalonia Control Gallery"
-        xmlns:local="clr-namespace:ControlCatalog" SystemDecorations="None" Name="Window">
+        SystemDecorations="None" Name="Window">
         <NativeMenu.Menu>
     <NativeMenu>
       <NativeMenuItem Header="Decorated">
@@ -43,8 +43,13 @@
                 <StackPanel>
                     <TextBlock>Hello world!</TextBlock>
 
-                    <CheckBox IsChecked="{Binding ElementName=Window, Path=HasSystemDecorations}">Decorated</CheckBox>
-
+                    <ComboBox SelectedItem="{Binding ElementName=Window, Path=SystemDecorations}">
+                      <ComboBox.Items>
+                        <SystemDecorations>None</SystemDecorations>
+                        <SystemDecorations>BorderOnly</SystemDecorations>
+                        <SystemDecorations>Full</SystemDecorations>
+                      </ComboBox.Items>
+                    </ComboBox>
                     <CheckBox IsChecked="{Binding ElementName=Window, Path=CanResize}">CanResize</CheckBox>
                 </StackPanel>
             </Border>

+ 5 - 3
samples/ControlCatalog/MainView.xaml

@@ -1,9 +1,11 @@
 <UserControl x:Class="ControlCatalog.MainView"
              xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:controls="clr-namespace:ControlSamples;assembly=ControlSamples"
-             xmlns:models="clr-namespace:ControlCatalog.Models"
-             xmlns:pages="clr-namespace:ControlCatalog.Pages">
+             xmlns:controls="using:ControlSamples"
+             xmlns:models="using:ControlCatalog.Models"
+             xmlns:pages="using:ControlCatalog.Pages"
+             xmlns:viewModels="using:ControlCatalog.ViewModels"
+             x:DataType="viewModels:MainWindowViewModel">
   <Grid>
     <Grid.Styles>
       <Style Selector="TextBlock.h2">

+ 6 - 5
samples/ControlCatalog/MainWindow.xaml

@@ -1,19 +1,20 @@
 <Window xmlns="https://github.com/avaloniaui" MinWidth="500" MinHeight="300"
         Width="1024" Height="800"
-        xmlns:pages="clr-namespace:ControlCatalog.Pages"
+        xmlns:pages="using:ControlCatalog.Pages"
         Title="Avalonia Control Gallery"
         Icon="/Assets/test_icon.ico"
-        xmlns:local="clr-namespace:ControlCatalog"
+        xmlns:local="using:ControlCatalog"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        xmlns:vm="clr-namespace:ControlCatalog.ViewModels"
-        xmlns:v="clr-namespace:ControlCatalog.Views"
+        xmlns:vm="using:ControlCatalog.ViewModels"
+        xmlns:v="using:ControlCatalog.Views"
         ExtendClientAreaToDecorationsHint="{Binding ExtendClientAreaEnabled}"
         ExtendClientAreaChromeHints="{Binding ChromeHints}"
         ExtendClientAreaTitleBarHeightHint="{Binding TitleBarHeight}"
         TransparencyLevelHint="{Binding TransparencyLevel}"        
         x:Name="MainWindow"
         Background="Transparent"
-        x:Class="ControlCatalog.MainWindow" WindowState="{Binding WindowState, Mode=TwoWay}">
+        x:Class="ControlCatalog.MainWindow" WindowState="{Binding WindowState, Mode=TwoWay}"
+        x:DataType="vm:MainWindowViewModel">
   <NativeMenu.Menu>
     <NativeMenu>
       <NativeMenuItem Header="File">

+ 20 - 0
samples/ControlCatalog/Models/StateData.cs

@@ -0,0 +1,20 @@
+namespace ControlCatalog.Models;
+
+public class StateData
+{
+    public string Name { get; private set; }
+    public string Abbreviation { get; private set; }
+    public string Capital { get; private set; }
+
+    public StateData(string name, string abbreviatoin, string capital)
+    {
+        Name = name;
+        Abbreviation = abbreviatoin;
+        Capital = capital;
+    }
+
+    public override string ToString()
+    {
+        return Name;
+    }
+}

+ 3 - 3
samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml

@@ -2,8 +2,8 @@
              xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-             xmlns:sys="clr-namespace:System;assembly=netstandard"
+             xmlns:sys="using:System"
+             xmlns:models="using:ControlCatalog.Models"
              d:DesignHeight="600"
              d:DesignWidth="400">
   <StackPanel Orientation="Vertical"
@@ -45,7 +45,7 @@
 
       <StackPanel>
         <TextBlock Text="ValueMemberBinding" />
-        <AutoCompleteBox ValueMemberBinding="{Binding Capital}" />
+        <AutoCompleteBox ValueMemberBinding="{Binding Capital, x:DataType=models:StateData}" />
       </StackPanel>
       <StackPanel>
         <TextBlock Text="Multi-Binding" />

+ 1 - 19
samples/ControlCatalog/Pages/AutoCompleteBoxPage.xaml.cs

@@ -8,30 +8,12 @@ using System.Threading;
 using System.Threading.Tasks;
 using Avalonia.Data.Converters;
 using Avalonia.Data;
+using ControlCatalog.Models;
 
 namespace ControlCatalog.Pages
 {
     public class AutoCompleteBoxPage : UserControl
     {
-        public class StateData
-        {
-            public string Name { get; private set; }
-            public string Abbreviation { get; private set; }
-            public string Capital { get; private set; }
-
-            public StateData(string name, string abbreviatoin, string capital)
-            {
-                Name = name;
-                Abbreviation = abbreviatoin;
-                Capital = capital;
-            }
-
-            public override string ToString()
-            {
-                return Name;
-            }
-        }
-
         private StateData[] BuildAllStates()
         {
             return new StateData[]

+ 0 - 1
samples/ControlCatalog/Pages/BorderPage.xaml

@@ -1,7 +1,6 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
-             xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              d:DesignHeight="800"
              d:DesignWidth="400"
              x:Class="ControlCatalog.Pages.BorderPage">

+ 1 - 1
samples/ControlCatalog/Pages/ButtonSpinnerPage.xaml

@@ -1,7 +1,7 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              x:Class="ControlCatalog.Pages.ButtonSpinnerPage"
-             xmlns:sys="clr-namespace:System;assembly=netstandard">
+             xmlns:sys="using:System">
 
   <StackPanel Orientation="Vertical" Spacing="4">
     <TextBlock Classes="h2">The ButtonSpinner control allows you to add button spinners to any element and then respond to the Spin event to manipulate that element.</TextBlock>

+ 1 - 1
samples/ControlCatalog/Pages/CalendarDatePickerPage.xaml

@@ -1,6 +1,6 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:vm="clr-namespace:ControlCatalog.ViewModels"
+             xmlns:vm="using:ControlCatalog.ViewModels"
              x:DataType="vm:MainWindowViewModel"
              x:Class="ControlCatalog.Pages.CalendarDatePickerPage">
   <StackPanel Orientation="Vertical" Spacing="4">

+ 1 - 3
samples/ControlCatalog/Pages/ColorPickerPage.xaml

@@ -2,9 +2,7 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-             xmlns:controls="clr-namespace:Avalonia.Controls;assembly=Avalonia.Controls.ColorPicker"
-             xmlns:primitives="clr-namespace:Avalonia.Controls.Primitives;assembly=Avalonia.Controls"
-             xmlns:pc="clr-namespace:Avalonia.Controls.Primitives.Converters;assembly=Avalonia.Controls.ColorPicker"
+             xmlns:controls="using:Avalonia.Controls"
              mc:Ignorable="d"
              d:DesignWidth="800"
              d:DesignHeight="450"

+ 5 - 3
samples/ControlCatalog/Pages/ComboBoxPage.xaml

@@ -3,7 +3,9 @@
     xmlns="https://github.com/avaloniaui"
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     xmlns:col="using:System.Collections"
-    xmlns:sys="using:System">
+    xmlns:sys="using:System"
+    xmlns:viewModels="using:ControlCatalog.ViewModels"
+    x:DataType="viewModels:ComboBoxPageViewModel">
     <StackPanel Orientation="Vertical" Spacing="4">
         <TextBlock Classes="h2">A drop-down list.</TextBlock>
 
@@ -39,7 +41,7 @@
                         </col:ArrayList>
                     </ComboBox.Items>
                     <ComboBox.ItemTemplate>
-                        <DataTemplate>
+                        <DataTemplate x:DataType="sys:String">
                             <Panel>
                                 <TextBlock Text="{Binding}" />
                                 <TextBlock IsVisible="{Binding Converter={x:Static ObjectConverters.IsNull}}" Text="Null object" />
@@ -71,7 +73,7 @@
                     SelectedIndex="0"
                     WrapSelection="{Binding WrapSelection}">
                     <ComboBox.ItemTemplate>
-                        <DataTemplate>
+                        <DataTemplate x:DataType="FontFamily">
                             <TextBlock FontFamily="{Binding}" Text="{Binding Name}" />
                         </DataTemplate>
                     </ComboBox.ItemTemplate>

+ 2 - 2
samples/ControlCatalog/Pages/CompositionPage.axaml

@@ -1,6 +1,6 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:pages="clr-namespace:ControlCatalog.Pages"
+             xmlns:pages="using:ControlCatalog.Pages"
              x:Class="ControlCatalog.Pages.CompositionPage">
     <StackPanel>
         <TextBlock Classes="h1">Implicit animations</TextBlock>
@@ -42,4 +42,4 @@
 
      
     </StackPanel>
-</UserControl>
+</UserControl>

+ 4 - 2
samples/ControlCatalog/Pages/ContextFlyoutPage.xaml

@@ -3,9 +3,11 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+             xmlns:viewModels="using:ControlCatalog.ViewModels"
              d:DesignHeight="450"
              d:DesignWidth="800"
-             mc:Ignorable="d">
+             mc:Ignorable="d"
+             x:DataType="viewModels:ContextPageViewModel">
   <UserControl.Styles>
     <Style Selector="FlyoutPresenter.NoPadding">
       <Setter Property="Padding" Value="0" />
@@ -57,7 +59,7 @@
       </Border>
       <Border Classes="context-target">
         <Border.Styles>
-          <Style Selector="MenuFlyoutPresenter MenuItem">
+          <Style Selector="MenuFlyoutPresenter MenuItem" x:DataType="viewModels:MenuItemViewModel">
             <Setter Property="Header" Value="{Binding Header}"/>
             <Setter Property="Items" Value="{Binding Items}"/>
             <Setter Property="Command" Value="{Binding Command}"/>

+ 4 - 2
samples/ControlCatalog/Pages/ContextMenuPage.xaml

@@ -1,6 +1,8 @@
 <UserControl x:Class="ControlCatalog.Pages.ContextMenuPage"
              xmlns="https://github.com/avaloniaui"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:viewModels="using:ControlCatalog.ViewModels"
+             x:DataType="viewModels:ContextPageViewModel">
   <StackPanel Orientation="Vertical" Spacing="4">
     <TextBlock Classes="h2">A right click menu that can be applied to any control.</TextBlock>
 
@@ -47,7 +49,7 @@
       </Border>
       <Border>
         <Border.Styles>
-          <Style Selector="ContextMenu MenuItem">
+          <Style Selector="ContextMenu MenuItem" x:DataType="viewModels:MenuItemViewModel">
             <Setter Property="Header" Value="{Binding Header}"/>
             <Setter Property="Items" Value="{Binding Items}"/>
             <Setter Property="Command" Value="{Binding Command}"/>

+ 4 - 2
samples/ControlCatalog/Pages/CursorPage.xaml

@@ -1,6 +1,8 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             x:Class="ControlCatalog.Pages.CursorPage">
+             xmlns:viewModels="using:ControlCatalog.ViewModels"
+             x:Class="ControlCatalog.Pages.CursorPage"
+             x:DataType="viewModels:CursorPageViewModel">
   <Grid ColumnDefinitions="*,*" RowDefinitions="Auto,*">
     <StackPanel Grid.ColumnSpan="2" Orientation="Vertical" Spacing="4">
       <TextBlock Classes="h2">Defines a cursor (mouse pointer)</TextBlock>
@@ -9,7 +11,7 @@
     <ListBox Grid.Row="1" Items="{Binding StandardCursors}" Margin="0 8 8 8">
       <ListBox.Styles>
         <Style Selector="ListBoxItem">
-          <Setter Property="Cursor" Value="{Binding Cursor}"/>
+          <Setter Property="Cursor" Value="{Binding Cursor}" x:DataType="viewModels:StandardCursorModel"/>
         </Style>
       </ListBox.Styles>
       <ListBox.ItemTemplate>

Filskillnaden har hållts tillbaka eftersom den är för stor
+ 1 - 1
samples/ControlCatalog/Pages/DataGridPage.xaml


+ 1 - 1
samples/ControlCatalog/Pages/DateTimePickerPage.xaml

@@ -2,7 +2,7 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-             xmlns:sys="clr-namespace:System;assembly=netstandard"
+             xmlns:sys="using:System"
              mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
              x:Class="ControlCatalog.Pages.DateTimePickerPage">
   <StackPanel Orientation="Vertical" Spacing="4" HorizontalAlignment="Stretch">

+ 3 - 1
samples/ControlCatalog/Pages/ExpanderPage.xaml

@@ -1,6 +1,8 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             x:Class="ControlCatalog.Pages.ExpanderPage">
+             xmlns:viewModels="using:ControlCatalog.ViewModels"
+             x:Class="ControlCatalog.Pages.ExpanderPage"
+             x:DataType="viewModels:ExpanderPageViewModel">
   <StackPanel Orientation="Vertical" Spacing="4">
     <TextBlock Classes="h2">Expands to show nested content</TextBlock>
 

+ 5 - 3
samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml

@@ -1,6 +1,8 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             x:Class="ControlCatalog.Pages.ItemsRepeaterPage">
+             xmlns:viewModels="using:ControlCatalog.ViewModels"
+             x:Class="ControlCatalog.Pages.ItemsRepeaterPage"
+             x:DataType="viewModels:ItemsRepeaterPageViewModel">
   <UserControl.Styles>
     <Style Selector="ItemsRepeater TextBlock.oddTemplate">
       <Setter Property="Background" Value="Yellow" />
@@ -21,12 +23,12 @@
   </UserControl.Styles>
   <UserControl.Resources>
     <RecyclePool x:Key="RecyclePool" />
-    <DataTemplate x:Key="odd">
+    <DataTemplate x:Key="odd" x:DataType="viewModels:ItemsRepeaterPageViewModelItem">
       <TextBlock Classes="oddTemplate"
                  Height="{Binding Height}"
                  Text="{Binding Text}"/>
     </DataTemplate>
-    <DataTemplate x:Key="even">
+    <DataTemplate x:Key="even" x:DataType="viewModels:ItemsRepeaterPageViewModelItem">
       <TextBlock Classes="evenTemplate"
                  Height="{Binding Height}"
                  Text="{Binding Text}"/>

+ 2 - 2
samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml.cs

@@ -44,7 +44,7 @@ namespace ControlCatalog.Pages
 
         public void OnSelectTemplateKey(object sender, SelectTemplateEventArgs e)
         {
-            if (e.DataContext is ItemsRepeaterPageViewModel.Item item)
+            if (e.DataContext is ItemsRepeaterPageViewModelItem item)
             {
                 e.TemplateKey = (item.Index % 2 == 0) ? "even" : "odd";
             }
@@ -125,7 +125,7 @@ namespace ControlCatalog.Pages
 
         private void RepeaterClick(object? sender, PointerPressedEventArgs e)
         {
-            if ((e.Source as TextBlock)?.DataContext is ItemsRepeaterPageViewModel.Item item)
+            if ((e.Source as TextBlock)?.DataContext is ItemsRepeaterPageViewModelItem item)
             {
                 _viewModel.SelectedItem = item;
                 _selectedIndex = _viewModel.Items.IndexOf(item);

+ 3 - 1
samples/ControlCatalog/Pages/LabelsPage.axaml

@@ -2,9 +2,11 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+             xmlns:models="using:ControlCatalog.Models"
              mc:Ignorable="d" d:DesignWidth="400" d:DesignHeight="250"
              x:Class="ControlCatalog.Pages.LabelsPage"
-             x:Name="_labelsPage">
+             x:Name="_labelsPage"
+             x:DataType="models:Person">
     <UserControl.Styles>
         <Style Selector="Label">
             <Setter Property="VerticalAlignment" Value="Center"/>

+ 3 - 1
samples/ControlCatalog/Pages/ListBoxPage.xaml

@@ -1,6 +1,8 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             x:Class="ControlCatalog.Pages.ListBoxPage">
+             xmlns:viewModels="using:ControlCatalog.ViewModels"
+             x:Class="ControlCatalog.Pages.ListBoxPage"
+             x:DataType="viewModels:ListBoxPageViewModel">
   <DockPanel>
     <DockPanel.Styles>
       <Style Selector="ListBox ListBoxItem:nth-child(5n+3)">

+ 5 - 3
samples/ControlCatalog/Pages/MenuPage.xaml

@@ -1,6 +1,8 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             x:Class="ControlCatalog.Pages.MenuPage">
+             xmlns:viewModels="using:ControlCatalog.ViewModels"
+             x:Class="ControlCatalog.Pages.MenuPage"
+             x:DataType="viewModels:MenuPageViewModel">
   <StackPanel Orientation="Vertical" Spacing="4">
     <TextBlock Classes="h2">Exported menu fallback</TextBlock>
     <TextBlock>(Should be only visible on platforms without desktop-global menu bar)</TextBlock>
@@ -45,7 +47,7 @@
                 <TextBlock Classes="h3" Margin="4 8">Dyanamically generated</TextBlock>
                 <Menu Items="{Binding MenuItems}">
                     <Menu.Styles>
-                        <Style Selector="MenuItem">
+                        <Style Selector="MenuItem" x:DataType="viewModels:MenuItemViewModel">
                             <Setter Property="Header" Value="{Binding Header}"/>
                             <Setter Property="Items" Value="{Binding Items}"/>
                             <Setter Property="Command" Value="{Binding Command}"/>
@@ -68,7 +70,7 @@
                         <Separator/>
                         <MenuItem Header="_Recent" Items="{Binding RecentItems}">
                             <MenuItem.Styles>
-                                <Style Selector="MenuItem">
+                                <Style Selector="MenuItem" x:DataType="viewModels:MenuItemViewModel">
                                     <Setter Property="Header" Value="{Binding Header}"/>
                                 </Style>
                             </MenuItem.Styles>

+ 3 - 1
samples/ControlCatalog/Pages/NotificationsPage.xaml

@@ -1,6 +1,8 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             x:Class="ControlCatalog.Pages.NotificationsPage">
+             xmlns:viewModels="using:ControlCatalog.ViewModels"
+             x:Class="ControlCatalog.Pages.NotificationsPage"
+             x:DataType="viewModels:NotificationViewModel">
   <StackPanel Orientation="Vertical" Spacing="4" HorizontalAlignment="Left">
         <Button Content="Show Standard Managed Notification" Command="{Binding ShowManagedNotificationCommand}" />
         <Button Content="Show Custom Managed Notification" Command="{Binding ShowCustomManagedNotificationCommand}" />

+ 7 - 4
samples/ControlCatalog/Pages/NumericUpDownPage.xaml

@@ -1,8 +1,10 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:sys="clr-namespace:System;assembly=netstandard"
-             xmlns:converter="clr-namespace:ControlCatalog.Converter"
-             x:Class="ControlCatalog.Pages.NumericUpDownPage">
+             xmlns:sys="using:System"
+             xmlns:converter="using:ControlCatalog.Converter"
+             xmlns:pages="using:ControlCatalog.Pages"
+             x:Class="ControlCatalog.Pages.NumericUpDownPage"
+             x:DataType="pages:NumbersPageViewModel">
   <StackPanel Orientation="Vertical" Spacing="4"
               MaxWidth="800">
     <TextBlock Margin="2" Classes="h2" TextWrapping="Wrap">Numeric up-down control provides a TextBox with button spinners that allow incrementing and decrementing numeric values by using the spinner buttons, keyboard up/down arrows, or mouse wheel.</TextBlock>
@@ -43,7 +45,7 @@
                   VerticalAlignment="Center" Margin="2"/>
 
         <TextBlock Grid.Row="2" Grid.Column="0" VerticalAlignment="Center" Margin="2">CultureInfo:</TextBlock>
-        <ComboBox Grid.Row="2" Grid.Column="1" Items="{Binding Cultures}" SelectedItem="{Binding #upDown.CultureInfo}"
+        <ComboBox x:Name="CultureSelector" Grid.Row="2" Grid.Column="1" Items="{Binding Cultures}"
                   VerticalAlignment="Center" Margin="2"/>
 
         <TextBlock Grid.Row="3" Grid.Column="0" VerticalAlignment="Center" Margin="2">Watermark:</TextBlock>
@@ -77,6 +79,7 @@
       <StackPanel Orientation="Vertical" Margin="10">
         <Label Target="upDown" FontSize="14" FontWeight="Bold" VerticalAlignment="Center">Usage of decimal NumericUpDown:</Label>
         <NumericUpDown Name="upDown" Minimum="0" Maximum="10" Increment="0.5"
+                       NumberFormat="{Binding #CultureSelector.SelectedItem, Converter={x:Static pages:NumericUpDownPage.CultureConverter}}"
                        VerticalAlignment="Center" Value="{Binding DecimalValue}"
                        Watermark="Enter text" FormatString="{Binding SelectedFormat.Value}"/>
       </StackPanel>

+ 3 - 0
samples/ControlCatalog/Pages/NumericUpDownPage.xaml.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Globalization;
 using System.Linq;
 using Avalonia.Controls;
+using Avalonia.Data.Converters;
 using Avalonia.Markup.Xaml;
 using MiniMvvm;
 
@@ -22,6 +23,8 @@ namespace ControlCatalog.Pages
             AvaloniaXamlLoader.Load(this);
         }
 
+        public static IValueConverter CultureConverter =
+            new FuncValueConverter<CultureInfo, NumberFormatInfo>(c => (c ?? CultureInfo.CurrentCulture).NumberFormat);
     }
 
     public class NumbersPageViewModel : ViewModelBase

+ 1 - 1
samples/ControlCatalog/Pages/OpenGlPage.xaml

@@ -1,7 +1,7 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              x:Class="ControlCatalog.Pages.OpenGlPage"
-             xmlns:pages="clr-namespace:ControlCatalog.Pages">
+             xmlns:pages="using:ControlCatalog.Pages">
   <Grid>
     <pages:OpenGlPageControl x:Name="GL"/>
     <StackPanel>

+ 3 - 1
samples/ControlCatalog/Pages/PlatformInfoPage.xaml

@@ -3,9 +3,11 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+             xmlns:viewModels="using:ControlCatalog.ViewModels"
              d:DesignHeight="800"
              d:DesignWidth="400"
-             mc:Ignorable="d">
+             mc:Ignorable="d"
+             x:DataType="viewModels:PlatformInformationViewModel">
   <StackPanel Spacing="20">
     <TextBlock Text="{Binding PlatformInfo}" />
 

+ 1 - 1
samples/ControlCatalog/Pages/ProgressBarPage.xaml

@@ -31,7 +31,7 @@
 
       <StackPanel Spacing="10">
         <ProgressBar VerticalAlignment="Center" IsIndeterminate="True" 
-                     Minimum="{Binding #minimum.Value}" Maximum="{Binding #maximum.value}"/>
+                     Minimum="{Binding #minimum.Value}" Maximum="{Binding #maximum.Value}"/>
         <ProgressBar VerticalAlignment="Center" Value="5" Maximum="10" />
         <ProgressBar VerticalAlignment="Center" Value="50" />
         <ProgressBar VerticalAlignment="Center" Value="50" Minimum="25" Maximum="75" />

+ 3 - 1
samples/ControlCatalog/Pages/ScrollViewerPage.xaml

@@ -1,6 +1,8 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             x:Class="ControlCatalog.Pages.ScrollViewerPage">
+             xmlns:pages="using:ControlCatalog.Pages"
+             x:Class="ControlCatalog.Pages.ScrollViewerPage"
+             x:DataType="pages:ScrollViewerPageViewModel">
   <StackPanel Orientation="Vertical" Spacing="4">
     <TextBlock Classes="h2">Allows for horizontal and vertical content scrolling.</TextBlock>
 

+ 1 - 1
samples/ControlCatalog/Pages/SliderPage.xaml

@@ -1,6 +1,6 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:sys="clr-namespace:System;assembly=netstandard"
+             xmlns:sys="using:System"
              x:Class="ControlCatalog.Pages.SliderPage">
   <StackPanel Orientation="Vertical" Spacing="4">
     <TextBlock Classes="h2">A control that lets the user select from a range of values by moving a Thumb control along a Track.</TextBlock>

+ 4 - 2
samples/ControlCatalog/Pages/SplitViewPage.xaml

@@ -2,8 +2,10 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+             xmlns:viewModels="using:ControlCatalog.ViewModels"
              mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
-             x:Class="ControlCatalog.Pages.SplitViewPage">
+             x:Class="ControlCatalog.Pages.SplitViewPage"
+             x:DataType="viewModels:SplitViewPageViewModel">
 
   <Border>
 
@@ -51,7 +53,7 @@
         <!--{Binding SelectedItem.Tag, ElementName=PaneBackgroundSelector}-->
         <SplitView Name="SplitView"
                       PanePlacement="{Binding PanePlacement}"
-                      PaneBackground="{Binding SelectedItem.Tag, ElementName=PaneBackgroundSelector}"
+                      PaneBackground="{Binding ((Control)SelectedItem).Tag, ElementName=PaneBackgroundSelector, FallbackValue={x:Null}}"
                       OpenPaneLength="{Binding Value, ElementName=OpenPaneLengthSlider}"
                       CompactPaneLength="{Binding Value, ElementName=CompactPaneLengthSlider}"
                       DisplayMode="{Binding CurrentDisplayMode}">

+ 6 - 4
samples/ControlCatalog/Pages/TabControlPage.xaml

@@ -1,7 +1,9 @@
 <UserControl
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
     x:Class="ControlCatalog.Pages.TabControlPage"
-    xmlns="https://github.com/avaloniaui">
+    xmlns="https://github.com/avaloniaui"
+    xmlns:viewModels="using:ControlCatalog.ViewModels"
+    x:DataType="viewModels:TabControlPageViewModel">
     <DockPanel>
         <TextBlock 
             DockPanel.Dock="Top" 
@@ -53,14 +55,14 @@
                     Margin="0 16"
                     TabStripPlacement="{Binding TabPlacement}">
                     <TabControl.ItemTemplate>
-                        <DataTemplate>
+                        <DataTemplate x:DataType="viewModels:TabControlPageViewModelItem">
                             <TextBlock
                                 Text="{Binding Header}">
                             </TextBlock>
                         </DataTemplate>
                     </TabControl.ItemTemplate>
                     <TabControl.ContentTemplate>
-                        <DataTemplate>
+                        <DataTemplate x:DataType="viewModels:TabControlPageViewModelItem">
                             <StackPanel Orientation="Vertical" Spacing="8">
                                 <TextBlock Text="{Binding Text}"/>
                                 <Image Source="{Binding Image}" Width="300"/>
@@ -68,7 +70,7 @@
                         </DataTemplate>
                     </TabControl.ContentTemplate>
                     <TabControl.Styles>
-                        <Style Selector="TabItem">
+                        <Style Selector="TabItem" x:DataType="viewModels:TabControlPageViewModelItem">
                             <Setter Property="IsEnabled" Value="{Binding IsEnabled}"/>
                         </Style>
                     </TabControl.Styles>

+ 5 - 27
samples/ControlCatalog/Pages/TabControlPage.xaml.cs

@@ -5,8 +5,7 @@ using Avalonia.Controls;
 using Avalonia.Markup.Xaml;
 using Avalonia.Media.Imaging;
 using Avalonia.Platform;
-
-using MiniMvvm;
+using ControlCatalog.ViewModels;
 
 namespace ControlCatalog.Pages
 {
@@ -18,23 +17,23 @@ namespace ControlCatalog.Pages
         {
             InitializeComponent();
 
-            DataContext = new PageViewModel
+            DataContext = new TabControlPageViewModel
             {
                 Tabs = new[]
                 {
-                    new TabItemViewModel
+                    new TabControlPageViewModelItem
                     {
                         Header = "Arch",
                         Text = "This is the first templated tab page.",
                         Image = LoadBitmap("avares://ControlCatalog/Assets/delicate-arch-896885_640.jpg"),
                     },
-                    new TabItemViewModel
+                    new TabControlPageViewModelItem
                     {
                         Header = "Leaf",
                         Text = "This is the second templated tab page.",
                         Image = LoadBitmap("avares://ControlCatalog/Assets/maple-leaf-888807_640.jpg"),
                     },
-                    new TabItemViewModel
+                    new TabControlPageViewModelItem
                     {
                         Header = "Disabled",
                         Text = "You should not see this.",
@@ -55,26 +54,5 @@ namespace ControlCatalog.Pages
             var assets = AvaloniaLocator.Current!.GetService<IAssetLoader>()!;
             return new Bitmap(assets.Open(new Uri(uri)));
         }
-
-        private class PageViewModel : ViewModelBase
-        {
-            private Dock _tabPlacement;
-
-            public TabItemViewModel[]? Tabs { get; set; }
-
-            public Dock TabPlacement
-            {
-                get { return _tabPlacement; }
-                set { this.RaiseAndSetIfChanged(ref _tabPlacement, value); }
-            }
-        }
-
-        private class TabItemViewModel
-        {
-            public string? Header { get; set; }
-            public string? Text { get; set; }
-            public IBitmap? Image { get; set; }
-            public bool IsEnabled { get; set; } = true;
-        }
     }
 }

+ 6 - 4
samples/ControlCatalog/Pages/TabStripPage.xaml

@@ -1,6 +1,8 @@
 <UserControl xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              x:Class="ControlCatalog.Pages.TabStripPage"
-             xmlns="https://github.com/avaloniaui">
+             xmlns="https://github.com/avaloniaui"
+             xmlns:viewModels="using:ControlCatalog.ViewModels"
+             x:DataType="viewModels:TabControlPageViewModel">
     <StackPanel Orientation="Vertical" Spacing="4">
         <TextBlock Classes="h2">A control which displays a selectable strip of tabs</TextBlock>
 
@@ -16,14 +18,14 @@
         <Separator Margin="0 16"/>
 
         <TextBlock Classes="h1">Dynamically generated</TextBlock>
-        <TabStrip Items="{Binding}">
+        <TabStrip Items="{Binding Tabs}">
             <TabStrip.Styles>
-                <Style Selector="TabStripItem">
+                <Style Selector="TabStripItem" x:DataType="viewModels:TabControlPageViewModelItem">
                     <Setter Property="IsEnabled" Value="{Binding IsEnabled}"/>
                 </Style>
             </TabStrip.Styles>
             <TabStrip.ItemTemplate>
-                <DataTemplate>
+                <DataTemplate x:DataType="viewModels:TabControlPageViewModelItem">
                     <TextBlock Text="{Binding Header}"/>
                 </DataTemplate>
             </TabStrip.ItemTemplate>

+ 17 - 23
samples/ControlCatalog/Pages/TabStripPage.xaml.cs

@@ -1,9 +1,6 @@
-using System;
-using Avalonia;
 using Avalonia.Controls;
 using Avalonia.Markup.Xaml;
-using Avalonia.Media.Imaging;
-using Avalonia.Platform;
+using ControlCatalog.ViewModels;
 
 namespace ControlCatalog.Pages
 {
@@ -13,21 +10,24 @@ namespace ControlCatalog.Pages
         {
             InitializeComponent();
 
-            DataContext = new[]
+            DataContext = new TabControlPageViewModel
             {
-                new TabStripItemViewModel
+                Tabs = new []
                 {
-                    Header = "Item 1",
-                },
-                new TabStripItemViewModel
-                {
-                    Header = "Item 2",
-                },
-                new TabStripItemViewModel
-                {
-                    Header = "Disabled",
-                    IsEnabled = false,
-                },
+                    new TabControlPageViewModelItem()
+                    {
+                        Header = "Item 1",
+                    },
+                    new TabControlPageViewModelItem
+                    {
+                        Header = "Item 2",
+                    },
+                    new TabControlPageViewModelItem
+                    {
+                        Header = "Disabled",
+                        IsEnabled = false,
+                    },
+                }
             };
         }
 
@@ -35,11 +35,5 @@ namespace ControlCatalog.Pages
         {
             AvaloniaXamlLoader.Load(this);
         }
-
-        private class TabStripItemViewModel
-        {
-            public string? Header { get; set; }
-            public bool IsEnabled { get; set; } = true;
-        }
     }
 }

+ 1 - 1
samples/ControlCatalog/Pages/TextBoxPage.xaml

@@ -1,7 +1,7 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              x:Class="ControlCatalog.Pages.TextBoxPage"
-             xmlns:sys="clr-namespace:System;assembly=netstandard">
+             xmlns:sys="using:System">
   <StackPanel Orientation="Vertical" Spacing="4">
     <Label Classes="h2">A control into which the user can input text</Label>
 

+ 1 - 2
samples/ControlCatalog/Pages/TransitioningContentControlPage.axaml

@@ -3,11 +3,10 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              xmlns:vm="using:ControlCatalog.ViewModels"
-             xmlns:converter="clr-namespace:ControlCatalog.Converter"
+             xmlns:converter="using:ControlCatalog.Converter"
              xmlns:system="using:System"
              mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
              x:DataType="vm:TransitioningContentControlPageViewModel"
-             x:CompileBindings="True"
              x:Class="ControlCatalog.Pages.TransitioningContentControlPage">
 
     <UserControl.DataContext>

+ 3 - 1
samples/ControlCatalog/Pages/TreeViewPage.xaml

@@ -1,6 +1,8 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             x:Class="ControlCatalog.Pages.TreeViewPage">
+             xmlns:viewModels="using:ControlCatalog.ViewModels"
+             x:Class="ControlCatalog.Pages.TreeViewPage"
+             x:DataType="viewModels:TreeViewPageViewModel">
   <StackPanel Orientation="Vertical" Spacing="4">
     <TextBlock Classes="h2">Displays a hierachical tree of data.</TextBlock>
 

+ 1 - 1
samples/ControlCatalog/Pages/ViewboxPage.xaml

@@ -1,6 +1,6 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:collections="clr-namespace:System.Collections;assembly=netstandard"
+             xmlns:collections="using:System.Collections"
              x:Class="ControlCatalog.Pages.ViewboxPage">
 
     <Grid RowDefinitions="Auto,*,*">

+ 3 - 1
samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml

@@ -2,8 +2,10 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+             xmlns:viewModels="using:ControlCatalog.ViewModels"
              mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
-             x:Class="ControlCatalog.Pages.WindowCustomizationsPage">
+             x:Class="ControlCatalog.Pages.WindowCustomizationsPage"
+             x:DataType="viewModels:MainWindowViewModel">
   <StackPanel Spacing="10"  Margin="25">
     <CheckBox Content="Extend Client Area to Decorations" IsChecked="{Binding ExtendClientAreaEnabled}" />
     <CheckBox Content="Title Bar" IsChecked="{Binding SystemTitleBarEnabled}" />    

+ 10 - 10
samples/ControlCatalog/ViewModels/CursorPageViewModel.cs

@@ -27,18 +27,18 @@ namespace ControlCatalog.ViewModels
         public IEnumerable<StandardCursorModel> StandardCursors { get; }
         
         public Cursor CustomCursor { get; }
-
-        public class StandardCursorModel
+    }
+    
+    public class StandardCursorModel
+    {
+        public StandardCursorModel(StandardCursorType type)
         {
-            public StandardCursorModel(StandardCursorType type)
-            {
-                Type = type;
-                Cursor = new Cursor(type);
-            }
+            Type = type;
+            Cursor = new Cursor(type);
+        }
 
-            public StandardCursorType Type { get; }
+        public StandardCursorType Type { get; }
             
-            public Cursor Cursor { get; }
-        }
+        public Cursor Cursor { get; }
     }
 }

+ 22 - 22
samples/ControlCatalog/ViewModels/ItemsRepeaterPageViewModel.cs

@@ -10,25 +10,25 @@ namespace ControlCatalog.ViewModels
     {
         private int _newItemIndex = 1;
         private int _newGenerationIndex = 0;
-        private ObservableCollection<Item> _items;
+        private ObservableCollection<ItemsRepeaterPageViewModelItem> _items;
 
         public ItemsRepeaterPageViewModel()
         {
             _items = CreateItems();
         }
 
-        public ObservableCollection<Item> Items
+        public ObservableCollection<ItemsRepeaterPageViewModelItem> Items
         {
             get => _items;
             set => this.RaiseAndSetIfChanged(ref _items, value);
         }
 
-        public Item? SelectedItem { get; set; }
+        public ItemsRepeaterPageViewModelItem? SelectedItem { get; set; }
 
         public void AddItem()
         {
             var index = SelectedItem != null ? Items.IndexOf(SelectedItem) : -1;
-            Items.Insert(index + 1, new Item(index + 1, $"New Item {_newItemIndex++}"));
+            Items.Insert(index + 1, new ItemsRepeaterPageViewModelItem(index + 1, $"New Item {_newItemIndex++}"));
         }
 
         public void RemoveItem()
@@ -59,33 +59,33 @@ namespace ControlCatalog.ViewModels
             Items = CreateItems();
         }
 
-        private ObservableCollection<Item> CreateItems()
+        private ObservableCollection<ItemsRepeaterPageViewModelItem> CreateItems()
         {
             var suffix = _newGenerationIndex == 0 ? string.Empty : $"[{_newGenerationIndex.ToString()}]";
 
             _newGenerationIndex++;
 
-            return new ObservableCollection<Item>(
-                Enumerable.Range(1, 100000).Select(i => new Item(i, $"Item {i.ToString()} {suffix}")));
+            return new ObservableCollection<ItemsRepeaterPageViewModelItem>(
+                Enumerable.Range(1, 100000).Select(i => new ItemsRepeaterPageViewModelItem(i, $"Item {i.ToString()} {suffix}")));
         }
+    }
+    
+    public class ItemsRepeaterPageViewModelItem : ViewModelBase
+    {
+        private double _height = double.NaN;
 
-        public class Item : ViewModelBase
+        public ItemsRepeaterPageViewModelItem(int index, string text)
         {
-            private double _height = double.NaN;
-
-            public Item(int index, string text)
-            {
-                Index = index;
-                Text = text;
-            }
-            public int Index { get; }
-            public string Text { get; }
+            Index = index;
+            Text = text;
+        }
+        public int Index { get; }
+        public string Text { get; }
             
-            public double Height 
-            {
-                get => _height;
-                set => this.RaiseAndSetIfChanged(ref _height, value);
-            }
+        public double Height 
+        {
+            get => _height;
+            set => this.RaiseAndSetIfChanged(ref _height, value);
         }
     }
 }

+ 26 - 0
samples/ControlCatalog/ViewModels/TabControlPageViewModel.cs

@@ -0,0 +1,26 @@
+using Avalonia.Controls;
+using Avalonia.Media.Imaging;
+using MiniMvvm;
+
+namespace ControlCatalog.ViewModels;
+
+public class TabControlPageViewModel : ViewModelBase
+{
+    private Dock _tabPlacement;
+
+    public TabControlPageViewModelItem[]? Tabs { get; set; }
+
+    public Dock TabPlacement
+    {
+        get { return _tabPlacement; }
+        set { this.RaiseAndSetIfChanged(ref _tabPlacement, value); }
+    }
+}
+
+public class TabControlPageViewModelItem
+{
+    public string? Header { get; set; }
+    public string? Text { get; set; }
+    public IBitmap? Image { get; set; }
+    public bool IsEnabled { get; set; } = true;
+}

+ 3 - 1
samples/ControlCatalog/Views/CustomNotificationView.xaml

@@ -1,6 +1,8 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             x:Class="ControlCatalog.Views.CustomNotificationView">
+             xmlns:viewModels="using:ControlCatalog.ViewModels"
+             x:Class="ControlCatalog.Views.CustomNotificationView"
+             x:DataType="viewModels:NotificationViewModel">
     <Border Padding="12" MinHeight="20" Background="DodgerBlue">
         <Grid ColumnDefinitions="Auto,*">
             <Panel Margin="0,0,12,0" Width="25" Height="25" VerticalAlignment="Top">

+ 3 - 1
samples/IntegrationTestApp/MainWindow.axaml

@@ -2,10 +2,12 @@
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
         xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+        xmlns:integrationTestApp="using:IntegrationTestApp"
         mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
         x:Class="IntegrationTestApp.MainWindow"
         Name="MainWindow"
-        Title="IntegrationTestApp">
+        Title="IntegrationTestApp"
+        x:DataType="integrationTestApp:MainWindow">
   <NativeMenu.Menu>
     <NativeMenu>
       <NativeMenuItem Header="File">

+ 1 - 0
samples/IntegrationTestApp/ShowWindowTest.axaml

@@ -2,6 +2,7 @@
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         x:Class="IntegrationTestApp.ShowWindowTest"
         Name="SecondaryWindow"
+        x:DataType="Window"
         Title="Show Window Test">
   <Grid ColumnDefinitions="Auto,Auto" RowDefinitions="Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto,Auto">
     <Label Grid.Column="0" Grid.Row="1">Client Size</Label>

+ 0 - 1
samples/MobileSandbox/App.xaml

@@ -1,6 +1,5 @@
 <Application xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             x:CompileBindings="True"
              Name="Mobile Sandbox"
              x:Class="MobileSandbox.App">
   <Application.Styles>

+ 3 - 1
samples/MobileSandbox/MainView.xaml

@@ -1,6 +1,8 @@
 <UserControl x:Class="MobileSandbox.MainView"
              xmlns="https://github.com/avaloniaui"
-             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+             xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+             xmlns:mobileSandbox="using:MobileSandbox"
+             x:DataType="mobileSandbox:MainView">
   <StackPanel Margin="100 50" Spacing="50">
     <TextBlock Text="Login" Foreground="White" />
     <TextBox Watermark="Text" />

+ 4 - 4
samples/MobileSandbox/Views/CustomNotificationView.xaml

@@ -7,12 +7,12 @@
                 <TextBlock Text="&#xE115;" FontFamily="Segoe UI Symbol" FontSize="20" TextAlignment="Center" VerticalAlignment="Center"/>
             </Panel>
             <DockPanel Grid.Column="1">
-                <TextBlock DockPanel.Dock="Top" Text="{Binding Title}" FontWeight="Medium" />
+                <TextBlock DockPanel.Dock="Top" Text="{ReflectionBinding Title}" FontWeight="Medium" />
                 <StackPanel Spacing="20" DockPanel.Dock="Bottom" Margin="0,8,0,0" Orientation="Horizontal">
-                    <Button Content="No" DockPanel.Dock="Right" NotificationCard.CloseOnClick="True" Command="{Binding NoCommand}"  Margin="0,0,8,0" />
-                    <Button Content="Yes" DockPanel.Dock="Right" NotificationCard.CloseOnClick="True" Command="{Binding YesCommand}" />
+                    <Button Content="No" DockPanel.Dock="Right" NotificationCard.CloseOnClick="True" Command="{ReflectionBinding NoCommand}"  Margin="0,0,8,0" />
+                    <Button Content="Yes" DockPanel.Dock="Right" NotificationCard.CloseOnClick="True" Command="{ReflectionBinding YesCommand}" />
                 </StackPanel>
-                <TextBlock Text="{Binding Message}" TextWrapping="Wrap" Opacity=".8" Margin="0,8,0,0"/>
+                <TextBlock Text="{ReflectionBinding Message}" TextWrapping="Wrap" Opacity=".8" Margin="0,8,0,0"/>
             </DockPanel>
         </Grid>
     </Border>

+ 4 - 2
samples/RenderDemo/MainWindow.xaml

@@ -1,9 +1,11 @@
 <Window x:Class="RenderDemo.MainWindow"
         xmlns="https://github.com/avaloniaui"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        xmlns:controls="clr-namespace:ControlSamples;assembly=ControlSamples"
-        xmlns:pages="clr-namespace:RenderDemo.Pages"
+        xmlns:controls="using:ControlSamples"
+        xmlns:pages="using:RenderDemo.Pages"
+        xmlns:viewModels="using:RenderDemo.ViewModels"
         Title="AvaloniaUI Rendering Test"
+        x:DataType="viewModels:MainWindowViewModel"
         Width="{Binding Width, Mode=TwoWay}"
         Height="{Binding Height, Mode=TwoWay}">
   <controls:HamburgerMenu ExpandedModeThresholdWidth="760">

+ 3 - 1
samples/RenderDemo/Pages/AnimationsPage.xaml

@@ -1,7 +1,9 @@
 <UserControl 
   xmlns="https://github.com/avaloniaui" 
-  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
+  xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+  xmlns:viewModels="using:RenderDemo.ViewModels"
   x:Class="RenderDemo.Pages.AnimationsPage"
+  x:DataType="viewModels:AnimationsPageViewModel"
   MaxWidth="600">
   <UserControl.Styles>
     <Styles>

+ 1 - 1
samples/RenderDemo/Pages/CustomAnimatorPage.xaml

@@ -1,7 +1,7 @@
 <UserControl 
   xmlns="https://github.com/avaloniaui" 
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
-  xmlns:pages="clr-namespace:RenderDemo.Pages"
+  xmlns:pages="using:RenderDemo.Pages"
   x:Class="RenderDemo.Pages.CustomAnimatorPage"
   MaxWidth="600">
   <Grid>

+ 1 - 1
samples/RenderDemo/Pages/GlyphRunPage.xaml

@@ -2,7 +2,7 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
-             xmlns:local="clr-namespace:RenderDemo.Pages"
+             xmlns:local="using:RenderDemo.Pages"
              mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
              x:Class="RenderDemo.Pages.GlyphRunPage">
   <Grid

+ 1 - 1
samples/RenderDemo/Pages/LineBoundsPage.xaml

@@ -3,7 +3,7 @@
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
              mc:Ignorable="d" d:DesignWidth="800" d:DesignHeight="450"
-             xmlns:controls="clr-namespace:RenderDemo.Controls"
+             xmlns:controls="using:RenderDemo.Controls"
              x:Class="RenderDemo.Pages.LineBoundsPage">
   <controls:LineBoundsDemoControl />
 </UserControl>

+ 3 - 1
samples/RenderDemo/Pages/Transform3DPage.axaml

@@ -2,8 +2,10 @@
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
              xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+             xmlns:viewModels="using:RenderDemo.ViewModels"
              mc:Ignorable="d" d:DesignWidth="600" d:DesignHeight="700"
-             x:Class="RenderDemo.Pages.Transform3DPage">
+             x:Class="RenderDemo.Pages.Transform3DPage"
+             x:DataType="viewModels:Transform3DPageViewModel">
     <UserControl.Styles>
         <Styles>
             <Styles.Resources>

+ 2 - 0
samples/RenderDemo/Pages/TransitionsPage.xaml

@@ -1,7 +1,9 @@
 <UserControl 
   xmlns="https://github.com/avaloniaui" 
   xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+  xmlns:viewModels="using:RenderDemo.ViewModels"
   x:Class="RenderDemo.Pages.TransitionsPage"
+  x:DataType="viewModels:AnimationsPageViewModel"
   MaxWidth="600">
   <UserControl.Styles>
     <Styles>

+ 3 - 3
samples/SampleControls/HamburgerMenu/HamburgerMenu.xaml

@@ -194,7 +194,7 @@
                              VerticalAlignment="Center"
                              Classes="h1"
                              Margin="{StaticResource HeaderMarginExpandedPane}"
-                             Text="{Binding $parent[TabControl].SelectedItem.Header, FallbackValue=''}">
+                             Text="{Binding $parent[TabControl].SelectedItem.(TabItem.Header), FallbackValue=''}">
                     <TextBlock.Transitions>
                       <Transitions>
                         <ThicknessTransition Easing="{StaticResource SplitViewPaneAnimationEasing}"
@@ -250,10 +250,10 @@
       <Setter Property="PaneBackground" Value="{TemplateBinding PaneBackground}" />
     </Style>
     <Style Selector="^ /template/ SplitView[DisplayMode=Overlay]">
-      <Setter Property="Background" Value="{Binding $parent[TabControl].ContentBackground}" />
+      <Setter Property="Background" Value="{Binding $parent[catalog:HamburgerMenu].ContentBackground}" />
     </Style>
     <Style Selector="^ /template/ SplitView[DisplayMode=Inline] Border#BackgroundBorder">
-      <Setter Property="Background" Value="{Binding $parent[TabControl].ContentBackground}" />
+      <Setter Property="Background" Value="{Binding $parent[catalog:HamburgerMenu].ContentBackground}" />
       <Setter Property="BoxShadow" Value="{StaticResource NavigationContentShadow}" />
     </Style>
     <Style Selector="^ /template/ SplitView[DisplayMode=Inline][IsPaneOpen=True] Border#BackgroundBorder">

+ 3 - 1
samples/VirtualizationDemo/MainWindow.xaml

@@ -1,9 +1,11 @@
 <Window xmlns="https://github.com/avaloniaui"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:viewModels="using:VirtualizationDemo.ViewModels"
         x:Class="VirtualizationDemo.MainWindow"
         Title="AvaloniaUI Virtualization Test"
         Width="800"
-        Height="600">
+        Height="600"
+        x:DataType="viewModels:MainWindowViewModel">
     <DockPanel LastChildFill="True" Margin="16">
         <StackPanel DockPanel.Dock="Right" 
                     Margin="16 0 0 0" 

+ 1 - 4
src/Avalonia.Controls.ColorPicker/Themes/Fluent/ColorPicker.xaml

@@ -1,10 +1,7 @@
 <ResourceDictionary xmlns="https://github.com/avaloniaui"
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                     xmlns:controls="using:Avalonia.Controls"
-                    xmlns:converters="using:Avalonia.Controls.Converters"
-                    xmlns:primitives="using:Avalonia.Controls.Primitives"
-                    xmlns:pc="clr-namespace:Avalonia.Controls.Primitives.Converters;assembly=Avalonia.Controls.ColorPicker"
-                    x:CompileBindings="True">
+                    xmlns:primitives="using:Avalonia.Controls.Primitives">
 
   <ResourceDictionary.MergedDictionaries>
     <ResourceInclude Source="avares://Avalonia.Controls.ColorPicker/Themes/Fluent/ColorView.xaml" />

+ 1 - 2
src/Avalonia.Controls.ColorPicker/Themes/Fluent/ColorPreviewer.xaml

@@ -1,7 +1,6 @@
 <ResourceDictionary xmlns="https://github.com/avaloniaui"
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-                    xmlns:pc="using:Avalonia.Controls.Primitives.Converters"
-                    x:CompileBindings="True">
+                    xmlns:pc="using:Avalonia.Controls.Primitives.Converters">
 
   <pc:AccentColorConverter x:Key="AccentColorConverter" />
   <x:Double x:Key="ColorPreviewerAccentSectionWidth">80</x:Double>

+ 1 - 2
src/Avalonia.Controls.ColorPicker/Themes/Fluent/ColorSlider.xaml

@@ -1,6 +1,5 @@
 <ResourceDictionary xmlns="https://github.com/avaloniaui"
-                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-                    x:CompileBindings="True">
+                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
 
   <ControlTheme x:Key="ColorSliderThumbTheme"
                 TargetType="Thumb">

+ 1 - 2
src/Avalonia.Controls.ColorPicker/Themes/Fluent/ColorSpectrum.xaml

@@ -1,7 +1,6 @@
 <ResourceDictionary xmlns="https://github.com/avaloniaui"
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-                    xmlns:controls="using:Avalonia.Controls"
-                    x:CompileBindings="True">
+                    xmlns:controls="using:Avalonia.Controls">
 
   <ControlTheme x:Key="{x:Type ColorSpectrum}"
                 TargetType="ColorSpectrum">

+ 2 - 3
src/Avalonia.Controls.ColorPicker/Themes/Fluent/ColorView.xaml

@@ -3,9 +3,8 @@
                     xmlns:controls="using:Avalonia.Controls"
                     xmlns:converters="using:Avalonia.Controls.Converters"
                     xmlns:primitives="using:Avalonia.Controls.Primitives"
-                    xmlns:pc="clr-namespace:Avalonia.Controls.Primitives.Converters;assembly=Avalonia.Controls.ColorPicker"
-                    xmlns:globalization="clr-namespace:System.Globalization;assembly=mscorlib"
-                    x:CompileBindings="True">
+                    xmlns:pc="using:Avalonia.Controls.Primitives.Converters"
+                    xmlns:globalization="using:System.Globalization">
 
   <pc:ContrastBrushConverter x:Key="ContrastBrushConverter" />
   <converters:ColorToDisplayNameConverter x:Key="ColorToDisplayNameConverter" />

+ 1 - 2
src/Avalonia.Controls.ColorPicker/Themes/Fluent/Fluent.xaml

@@ -1,7 +1,6 @@
 <Styles xmlns="https://github.com/avaloniaui"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        xmlns:converters="using:Avalonia.Controls.Converters"
-        x:CompileBindings="True">
+        xmlns:converters="using:Avalonia.Controls.Converters">
 
   <Styles.Resources>
     <ResourceDictionary>

+ 1 - 4
src/Avalonia.Controls.ColorPicker/Themes/Simple/ColorPicker.xaml

@@ -1,10 +1,7 @@
 <ResourceDictionary xmlns="https://github.com/avaloniaui"
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                     xmlns:controls="using:Avalonia.Controls"
-                    xmlns:converters="using:Avalonia.Controls.Converters"
-                    xmlns:primitives="using:Avalonia.Controls.Primitives"
-                    xmlns:pc="clr-namespace:Avalonia.Controls.Primitives.Converters;assembly=Avalonia.Controls.ColorPicker"
-                    x:CompileBindings="True">
+                    xmlns:primitives="using:Avalonia.Controls.Primitives">
 
   <ResourceDictionary.MergedDictionaries>
     <ResourceInclude Source="avares://Avalonia.Controls.ColorPicker/Themes/Simple/ColorView.xaml" />

+ 1 - 2
src/Avalonia.Controls.ColorPicker/Themes/Simple/ColorPreviewer.xaml

@@ -1,7 +1,6 @@
 <ResourceDictionary xmlns="https://github.com/avaloniaui"
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-                    xmlns:pc="using:Avalonia.Controls.Primitives.Converters"
-                    x:CompileBindings="True">
+                    xmlns:pc="using:Avalonia.Controls.Primitives.Converters">
 
   <pc:AccentColorConverter x:Key="AccentColorConverter" />
   <x:Double x:Key="ColorPreviewerAccentSectionWidth">80</x:Double>

+ 1 - 2
src/Avalonia.Controls.ColorPicker/Themes/Simple/ColorSlider.xaml

@@ -1,6 +1,5 @@
 <ResourceDictionary xmlns="https://github.com/avaloniaui"
-                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-                    x:CompileBindings="True">
+                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
 
   <ControlTheme x:Key="ColorSliderThumbTheme"
                 TargetType="Thumb">

+ 1 - 2
src/Avalonia.Controls.ColorPicker/Themes/Simple/ColorSpectrum.xaml

@@ -1,7 +1,6 @@
 <ResourceDictionary xmlns="https://github.com/avaloniaui"
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-                    xmlns:controls="using:Avalonia.Controls"
-                    x:CompileBindings="True">
+                    xmlns:controls="using:Avalonia.Controls">
 
   <ControlTheme x:Key="{x:Type ColorSpectrum}"
                 TargetType="ColorSpectrum">

+ 2 - 3
src/Avalonia.Controls.ColorPicker/Themes/Simple/ColorView.xaml

@@ -3,9 +3,8 @@
                     xmlns:controls="using:Avalonia.Controls"
                     xmlns:converters="using:Avalonia.Controls.Converters"
                     xmlns:primitives="using:Avalonia.Controls.Primitives"
-                    xmlns:pc="clr-namespace:Avalonia.Controls.Primitives.Converters;assembly=Avalonia.Controls.ColorPicker"
-                    xmlns:globalization="clr-namespace:System.Globalization;assembly=mscorlib"
-                    x:CompileBindings="True">
+                    xmlns:pc="using:Avalonia.Controls.Primitives.Converters"
+                    xmlns:globalization="using:System.Globalization">
 
   <pc:ContrastBrushConverter x:Key="ContrastBrushConverter" />
   <converters:ColorToDisplayNameConverter x:Key="ColorToDisplayNameConverter" />

+ 1 - 2
src/Avalonia.Controls.ColorPicker/Themes/Simple/Simple.xaml

@@ -1,7 +1,6 @@
 <Styles xmlns="https://github.com/avaloniaui"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        xmlns:converters="using:Avalonia.Controls.Converters"
-        x:CompileBindings="True">
+        xmlns:converters="using:Avalonia.Controls.Converters">
 
   <Styles.Resources>
     <ResourceDictionary>

+ 3 - 3
src/Avalonia.Controls.DataGrid/Themes/Fluent.xaml

@@ -1,5 +1,5 @@
 <Styles xmlns="https://github.com/avaloniaui" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        x:CompileBindings="True">
+        xmlns:collections="using:Avalonia.Collections">
   <Styles.Resources>
     <x:Double x:Key="ListAccentLowOpacity">0.6</x:Double>
     <x:Double x:Key="ListAccentMediumOpacity">0.8</x:Double>
@@ -402,7 +402,7 @@
       <Setter Property="FontSize" Value="15" />
       <Setter Property="MinHeight" Value="32" />
       <Setter Property="Template">
-        <ControlTemplate>
+        <ControlTemplate x:DataType="collections:DataGridCollectionViewGroup">
           <DataGridFrozenGrid Name="PART_Root"
                               Background="{TemplateBinding Background}"
                               MinHeight="{TemplateBinding MinHeight}"
@@ -433,7 +433,7 @@
                          IsVisible="{TemplateBinding IsPropertyNameVisible}"
                          Foreground="{TemplateBinding Foreground}" />
               <TextBlock Margin="4,0,0,0"
-                         Text="{ReflectionBinding Key}"
+                         Text="{Binding Key}"
                          Foreground="{TemplateBinding Foreground}" />
               <TextBlock Name="PART_ItemCountElement"
                          Margin="4,0,0,0"

+ 3 - 2
src/Avalonia.Controls.DataGrid/Themes/Simple.xaml

@@ -1,5 +1,6 @@
 <Styles xmlns="https://github.com/avaloniaui"
-        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:collections="using:Avalonia.Collections">
   <Styles.Resources>
     <Thickness x:Key="DataGridTextColumnCellTextBlockMargin">4</Thickness>
     <ControlTheme x:Key="DataGridCellTextBlockTheme"
@@ -253,7 +254,7 @@
       <Setter Property="Background" Value="{DynamicResource ThemeControlMidHighBrush}" />
       <Setter Property="Height" Value="20" />
       <Setter Property="Template">
-        <ControlTemplate>
+        <ControlTemplate x:DataType="collections:DataGridCollectionViewGroup">
           <DataGridFrozenGrid Name="Root"
                               ColumnDefinitions="Auto,Auto,Auto,Auto"
                               RowDefinitions="Auto,*,Auto">

+ 0 - 1
src/Avalonia.Diagnostics/Diagnostics/Controls/FilterTextBox.axaml

@@ -1,7 +1,6 @@
 <Styles xmlns="https://github.com/avaloniaui"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:controls="using:Avalonia.Diagnostics.Controls"
-        x:CompileBindings="True"
         x:DataType="controls:FilterTextBox">
 
   <Design.PreviewWith>

+ 1 - 1
src/Avalonia.Diagnostics/Diagnostics/Controls/ThicknessEditor.axaml

@@ -1,6 +1,6 @@
 <Styles xmlns="https://github.com/avaloniaui"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        xmlns:controls="clr-namespace:Avalonia.Diagnostics.Controls">
+        xmlns:controls="using:Avalonia.Diagnostics.Controls">
 
     <Styles.Resources>
         <SolidColorBrush x:Key="HighlightBorderBrush" Color="CornflowerBlue" />

+ 2 - 2
src/Avalonia.Diagnostics/Diagnostics/ViewModels/MainViewModel.cs

@@ -292,7 +292,7 @@ namespace Avalonia.Diagnostics.ViewModels
         
         [DependsOn(nameof(TreePageViewModel.SelectedNode))]
         [DependsOn(nameof(Content))]
-        bool CanShot(object? parameter)
+        public bool CanShot(object? parameter)
         {
             return Content is TreePageViewModel tree
                 && tree.SelectedNode != null
@@ -300,7 +300,7 @@ namespace Avalonia.Diagnostics.ViewModels
                 && visual.VisualRoot != null;
         }
 
-        async void Shot(object? parameter)
+        public async void Shot(object? parameter)
         {
             if ((Content as TreePageViewModel)?.SelectedNode?.Visual is IControl control
                 && _screenshotHandler is { }

+ 3 - 1
src/Avalonia.Diagnostics/Diagnostics/Views/ConsoleView.xaml

@@ -1,6 +1,8 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             x:Class="Avalonia.Diagnostics.Views.ConsoleView">
+             xmlns:viewModels="using:Avalonia.Diagnostics.ViewModels"
+             x:Class="Avalonia.Diagnostics.Views.ConsoleView"
+             x:DataType="viewModels:ConsoleViewModel">
   <UserControl.Styles>
     <Style Selector="TextBox.console">
       <Setter Property="FontFamily" Value="/Assets/Fonts/SourceSansPro-Regular.ttf"/>

+ 16 - 12
src/Avalonia.Diagnostics/Diagnostics/Views/ControlDetailsView.xaml

@@ -1,12 +1,13 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:conv="clr-namespace:Avalonia.Diagnostics.Converters"
-             xmlns:local="clr-namespace:Avalonia.Diagnostics.Views"
-             xmlns:controls="clr-namespace:Avalonia.Diagnostics.Controls"
-             xmlns:vm="clr-namespace:Avalonia.Diagnostics.ViewModels"
+             xmlns:conv="using:Avalonia.Diagnostics.Converters"
+             xmlns:local="using:Avalonia.Diagnostics.Views"
+             xmlns:controls="using:Avalonia.Diagnostics.Controls"
+             xmlns:vm="using:Avalonia.Diagnostics.ViewModels"
              xmlns:lb="using:Avalonia.Diagnostics.Behaviors"
              x:Class="Avalonia.Diagnostics.Views.ControlDetailsView"
-             x:Name="Main">
+             x:Name="Main"
+             x:DataType="vm:ControlDetailsViewModel">
 
   <UserControl.Resources>
     <conv:BoolToOpacityConverter x:Key="BoolToOpacity" Opacity="0.6"/>
@@ -58,21 +59,24 @@
                 CanUserResizeColumns="true"
                 DoubleTapped="PropertiesGrid_OnDoubleTapped">
         <DataGrid.Columns>
-          <DataGridTextColumn Header="Property" Binding="{Binding Name}" IsReadOnly="True" />
-          <DataGridTextColumn Header="Value" Binding="{Binding Value}" />
+          <DataGridTextColumn Header="Property" Binding="{Binding Name}" IsReadOnly="True" x:DataType="vm:PropertyViewModel" />
+          <DataGridTextColumn Header="Value" Binding="{Binding Value}" x:DataType="vm:PropertyViewModel" />
           <DataGridTextColumn Header="Type" Binding="{Binding Type}"
                               IsReadOnly="True"
-                              IsVisible="{Binding !$parent[UserControl;2].DataContext.ShowDetailsPropertyType}"
+                              IsVisible="{Binding !$parent[UserControl;2].((vm:MainViewModel)DataContext).ShowDetailsPropertyType}"
+                              x:DataType="vm:PropertyViewModel"
                               />
           <DataGridTextColumn Header="Assigned Type" Binding="{Binding AssignedType, Converter={StaticResource GetTypeName}}"
                               IsReadOnly="True"
-                              IsVisible="{Binding $parent[UserControl;2].DataContext.ShowDetailsPropertyType}"
+                              IsVisible="{Binding $parent[UserControl;2].((vm:MainViewModel)DataContext).ShowDetailsPropertyType}"
+                              x:DataType="vm:PropertyViewModel"
                               />
           <DataGridTextColumn Header="Property Type" Binding="{Binding PropertyType, Converter={StaticResource GetTypeName}}"
                               IsReadOnly="True"
-                              IsVisible="{Binding $parent[UserControl;2].DataContext.ShowDetailsPropertyType}"
+                              IsVisible="{Binding $parent[UserControl;2].((vm:MainViewModel)DataContext).ShowDetailsPropertyType}"
+                              x:DataType="vm:PropertyViewModel"
                               />
-          <DataGridTextColumn Header="Priority" Binding="{Binding Priority}" IsReadOnly="True" />
+          <DataGridTextColumn Header="Priority" Binding="{Binding Priority}" IsReadOnly="True" x:DataType="vm:PropertyViewModel" />
         </DataGrid.Columns>
 
         <DataGrid.Styles>
@@ -124,7 +128,7 @@
                     <MultiBinding Converter="{x:Static BoolConverters.And}">
                       <MultiBinding Converter="{x:Static BoolConverters.Or}" >
                         <Binding Path="IsActive" />
-                        <Binding Path="#Main.DataContext.ShowInactiveStyles" />
+                        <Binding Path="#Main.((vm:ControlDetailsViewModel)DataContext).ShowInactiveStyles" />
                       </MultiBinding>
                       <Binding Path="IsVisible" />
                     </MultiBinding>

+ 5 - 5
src/Avalonia.Diagnostics/Diagnostics/Views/EventsPageView.xaml

@@ -1,10 +1,10 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:vm="clr-namespace:Avalonia.Diagnostics.ViewModels"
-             xmlns:conv="clr-namespace:Avalonia.Diagnostics.Converters"
-             xmlns:controls="clr-namespace:Avalonia.Diagnostics.Controls"
+             xmlns:vm="using:Avalonia.Diagnostics.ViewModels"
+             xmlns:controls="using:Avalonia.Diagnostics.Controls"
              x:Class="Avalonia.Diagnostics.Views.EventsPageView"
-             Margin="2">
+             Margin="2"
+             x:DataType="vm:EventsPageViewModel">
   <UserControl.Styles>
     <Style Selector="TextBlock.nav" >
       <Setter Property="TextDecorations">
@@ -52,7 +52,7 @@
           </TreeDataTemplate>
         </TreeView.DataTemplates>
         <TreeView.Styles>
-          <Style Selector="TreeViewItem">
+          <Style Selector="TreeViewItem" x:DataType="vm:EventTreeNodeBase">
             <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}" />
             <Setter Property="IsVisible" Value="{Binding IsVisible}" />
           </Style>

+ 4 - 3
src/Avalonia.Diagnostics/Diagnostics/Views/LayoutExplorerView.axaml

@@ -1,9 +1,10 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
              x:Class="Avalonia.Diagnostics.Views.LayoutExplorerView"
-             xmlns:local="clr-namespace:Avalonia.Diagnostics.Views"
-             xmlns:controls="clr-namespace:Avalonia.Diagnostics.Controls"
-             xmlns:converters="clr-namespace:Avalonia.Diagnostics.Converters">
+             xmlns:controls="using:Avalonia.Diagnostics.Controls"
+             xmlns:converters="using:Avalonia.Diagnostics.Converters"
+             xmlns:viewModels="using:Avalonia.Diagnostics.ViewModels"
+             x:DataType="viewModels:ControlLayoutViewModel">
 
     <UserControl.Resources>
         <SolidColorBrush x:Key="SizeGuidelineBrush" Color="#333333" />

+ 5 - 3
src/Avalonia.Diagnostics/Diagnostics/Views/MainView.xaml

@@ -1,7 +1,9 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:views="clr-namespace:Avalonia.Diagnostics.Views"
-             x:Class="Avalonia.Diagnostics.Views.MainView">
+             xmlns:views="using:Avalonia.Diagnostics.Views"
+             xmlns:viewModels="using:Avalonia.Diagnostics.ViewModels"
+             x:Class="Avalonia.Diagnostics.Views.MainView"
+             x:DataType="viewModels:MainViewModel">
   <Grid Name="rootGrid" RowDefinitions="Auto,Auto,*,Auto,0,Auto">
     <Menu>
       <MenuItem Header="_File">
@@ -38,7 +40,7 @@
         </MenuItem>
       </MenuItem>
       <MenuItem Header="_View">
-        <MenuItem Header="_Console" Command="{Binding $parent[UserControl].ToggleConsole}">
+        <MenuItem Header="_Console" Command="{Binding $parent[views:MainView].ToggleConsole}">
           <MenuItem.Icon>
             <CheckBox BorderThickness="0"
                       IsChecked="{Binding Console.IsVisible}"

+ 5 - 3
src/Avalonia.Diagnostics/Diagnostics/Views/MainWindow.xaml

@@ -1,9 +1,11 @@
 <Window xmlns="https://github.com/avaloniaui"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        xmlns:views="clr-namespace:Avalonia.Diagnostics.Views"
-        xmlns:diag="clr-namespace:Avalonia.Diagnostics"
+        xmlns:views="using:Avalonia.Diagnostics.Views"
+        xmlns:diag="using:Avalonia.Diagnostics"
+        xmlns:viewModels="using:Avalonia.Diagnostics.ViewModels"
         Title="Avalonia DevTools"
-        x:Class="Avalonia.Diagnostics.Views.MainWindow">
+        x:Class="Avalonia.Diagnostics.Views.MainWindow"
+        x:DataType="viewModels:MainViewModel">
   <Window.DataTemplates>
     <diag:ViewLocator/>
   </Window.DataTemplates>

+ 4 - 3
src/Avalonia.Diagnostics/Diagnostics/Views/TreePageView.xaml

@@ -1,7 +1,8 @@
 <UserControl xmlns="https://github.com/avaloniaui"
              xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-             xmlns:vm="clr-namespace:Avalonia.Diagnostics.ViewModels"
-             x:Class="Avalonia.Diagnostics.Views.TreePageView">
+             xmlns:vm="using:Avalonia.Diagnostics.ViewModels"
+             x:Class="Avalonia.Diagnostics.Views.TreePageView"
+             x:DataType="vm:TreePageViewModel">
   <Grid ColumnDefinitions="0.35*,4,0.65*">
     <TreeView Name="tree"
               BorderThickness="0"
@@ -18,7 +19,7 @@
         </TreeDataTemplate>
       </TreeView.DataTemplates>
       <TreeView.Styles>
-        <Style Selector="TreeViewItem">
+        <Style Selector="TreeViewItem" x:DataType="vm:TreeNode">
           <Setter Property="IsExpanded" Value="{Binding IsExpanded, Mode=TwoWay}"/>
           <Setter Property="Background" Value="Transparent" />
         </Style>

+ 3 - 1
src/Avalonia.Dialogs/AboutAvaloniaDialog.xaml

@@ -1,5 +1,6 @@
 <Window xmlns="https://github.com/avaloniaui"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+        xmlns:dialogs="using:Avalonia.Dialogs"
         MaxWidth="400"
         MaxHeight="475"
         MinWidth="430"
@@ -7,7 +8,8 @@
         Title="About Avalonia"
         Background="Purple"
         FontFamily="/Assets/Roboto-Light.ttf#Roboto"
-        x:Class="Avalonia.Dialogs.AboutAvaloniaDialog">
+        x:Class="Avalonia.Dialogs.AboutAvaloniaDialog"
+        x:DataType="dialogs:AboutAvaloniaDialog">
   <Window.Styles>
     <Style>
       <Style.Resources>

+ 2 - 5
src/Avalonia.Dialogs/InternalViewModelBase.cs

@@ -1,15 +1,13 @@
 using System.Collections.Generic;
 using System.ComponentModel;
 using System.Runtime.CompilerServices;
-using JetBrains.Annotations;
 
-namespace Avalonia.Dialogs
+namespace Avalonia.Dialogs.Internal
 {
-    internal class InternalViewModelBase : INotifyPropertyChanged
+    public class InternalViewModelBase : INotifyPropertyChanged
     {
         public event PropertyChangedEventHandler PropertyChanged;
 
-        [NotifyPropertyChangedInvocator]
         protected bool RaiseAndSetIfChanged<T>(ref T field, T value, [CallerMemberName] string propertyName = null)
         {
             if (!EqualityComparer<T>.Default.Equals(field, value))
@@ -22,7 +20,6 @@ namespace Avalonia.Dialogs
             return false;
         }
 
-        [NotifyPropertyChangedInvocator]
         protected void RaisePropertyChanged([CallerMemberName] string propertyName = null)
         {
             PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));

+ 2 - 1
src/Avalonia.Dialogs/ManagedFileChooserFilterViewModel.cs

@@ -1,10 +1,11 @@
 using System.Linq;
 using System.Text.RegularExpressions;
+using Avalonia.Dialogs.Internal;
 using Avalonia.Platform.Storage;
 
 namespace Avalonia.Dialogs
 {
-    internal class ManagedFileChooserFilterViewModel : InternalViewModelBase
+    public class ManagedFileChooserFilterViewModel : InternalViewModelBase
     {
         private readonly Regex[] _patterns;
         public string Name { get; }

+ 2 - 1
src/Avalonia.Dialogs/ManagedFileChooserItemViewModel.cs

@@ -1,8 +1,9 @@
 using System;
+using Avalonia.Dialogs.Internal;
 
 namespace Avalonia.Dialogs
 {
-    internal class ManagedFileChooserItemViewModel : InternalViewModelBase
+    public class ManagedFileChooserItemViewModel : InternalViewModelBase
     {
         private string _displayName;
         private string _path;

+ 1 - 1
src/Avalonia.Dialogs/ManagedFileChooserNavigationItem.cs

@@ -1,6 +1,6 @@
 namespace Avalonia.Dialogs
 {
-    internal class ManagedFileChooserNavigationItem
+    public class ManagedFileChooserNavigationItem
     {
         public string DisplayName { get; set; }
         public string Path { get; set; }

+ 2 - 1
src/Avalonia.Dialogs/ManagedFileChooserViewModel.cs

@@ -8,12 +8,13 @@ using System.Runtime.InteropServices;
 using Avalonia.Collections;
 using Avalonia.Controls;
 using Avalonia.Controls.Platform;
+using Avalonia.Dialogs.Internal;
 using Avalonia.Platform.Storage;
 using Avalonia.Threading;
 
 namespace Avalonia.Dialogs
 {
-    internal class ManagedFileChooserViewModel : InternalViewModelBase
+    public class ManagedFileChooserViewModel : InternalViewModelBase
     {
         private readonly ManagedFileDialogOptions _options;
         public event Action CancelRequested;

+ 2 - 3
src/Avalonia.Themes.Fluent/Controls/ButtonSpinner.xaml

@@ -1,8 +1,7 @@
 <ResourceDictionary xmlns="https://github.com/avaloniaui"
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-                    xmlns:sys="clr-namespace:System;assembly=netstandard"
-                    xmlns:converters="clr-namespace:Avalonia.Controls.Converters;assembly=Avalonia.Controls"
-                    x:CompileBindings="True">
+                    xmlns:sys="using:System"
+                    xmlns:converters="using:Avalonia.Controls.Converters">
   <Design.PreviewWith>
     <Border Padding="20">
       <StackPanel Spacing="20">

+ 1 - 2
src/Avalonia.Themes.Fluent/Controls/CalendarDatePicker.xaml

@@ -1,7 +1,6 @@
 <ResourceDictionary xmlns="https://github.com/avaloniaui"
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-                    xmlns:sys="clr-namespace:System;assembly=netstandard"
-                    x:CompileBindings="True">
+                    xmlns:sys="using:System">
   <Design.PreviewWith>
     <Border Margin="20, 20, 20, 200">
       <CalendarDatePicker Width="200" VerticalContentAlignment="Center" HorizontalContentAlignment="Center" />

+ 3 - 5
src/Avalonia.Themes.Fluent/Controls/CalendarItem.xaml

@@ -6,9 +6,7 @@
 -->
 <ResourceDictionary xmlns="https://github.com/avaloniaui"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        xmlns:sys="clr-namespace:System;assembly=netstandard"
-        x:CompileBindings="True"
-        x:DataType="CalendarItem">
+        xmlns:sys="using:System">
   <Design.PreviewWith>
     <Border Padding="20">
       <Calendar DisplayDate="2000-01-01">
@@ -58,7 +56,7 @@
   <ControlTheme x:Key="{x:Type CalendarItem}" TargetType="CalendarItem">
     <Setter Property="CornerRadius" Value="{DynamicResource ControlCornerRadius}" />
     <Setter Property="DayTitleTemplate">
-      <Template>
+      <Template x:DataType="x:String">
         <TextBlock Text="{Binding}"
                    HorizontalAlignment="Center"
                    VerticalAlignment="Center"
@@ -112,7 +110,7 @@
               </Button>
             </Grid>
             <!--Border below is used only for MonthView but it can't be moved inside of Grid because CalendarItem expects it to be empty and it will cause side-effects-->
-            <Border Name="BackgroundLayer" Background="{TemplateBinding BorderBrush}" Margin="0,38,0,0" IsVisible="{ReflectionBinding #MonthView.IsVisible}" Grid.Row="1" />
+            <Border Name="BackgroundLayer" Background="{TemplateBinding BorderBrush}" Margin="0,38,0,0" IsVisible="{Binding #PART_MonthView.IsVisible}" Grid.Row="1" />
             <Grid Name="PART_MonthView" Grid.Row="1" IsVisible="False" MinHeight="290">
               <Grid.RowDefinitions>
                 <!--This should always be the week day names??-->

+ 1 - 1
src/Avalonia.Themes.Fluent/Controls/ComboBox.xaml

@@ -1,6 +1,6 @@
 <ResourceDictionary xmlns="https://github.com/avaloniaui"
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-                    xmlns:sys="clr-namespace:System;assembly=netstandard">
+                    xmlns:sys="using:System">
   <Design.PreviewWith>
     <Border Padding="20">
       <StackPanel Spacing="10">

+ 2 - 3
src/Avalonia.Themes.Fluent/Controls/DataValidationErrors.xaml

@@ -1,8 +1,7 @@
 <ResourceDictionary xmlns="https://github.com/avaloniaui"
                     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                     xmlns:sys="using:System"
-                    x:CompileBindings="True"
-                    x:DataType="DataValidationErrors">
+                    xmlns:collections="using:System.Collections">
   <Design.PreviewWith>
     <Border Padding="20">
       <StackPanel Spacing="20">
@@ -99,7 +98,7 @@
             </Style>
           </Panel.Styles>
           <ToolTip.Tip>
-            <ItemsControl Items="{ReflectionBinding}" />
+            <ItemsControl Items="{Binding}" x:DataType="collections:IEnumerable" />
           </ToolTip.Tip>
           <Path Width="14"
                 Height="14"

+ 1 - 2
src/Avalonia.Themes.Fluent/Controls/DatePicker.xaml

@@ -7,8 +7,7 @@
 
 <ResourceDictionary xmlns="https://github.com/avaloniaui"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
-        xmlns:sys="clr-namespace:System;assembly=netstandard"
-        x:CompileBindings="True">
+        xmlns:sys="using:System">
   <Design.PreviewWith>
     <Border Padding="20" Height="500">
       <StackPanel Spacing="20" VerticalAlignment="Center">

Vissa filer visades inte eftersom för många filer har ändrats