diff --git a/build/BuildTargets.targets b/build/BuildTargets.targets
index a5543cd050..481dbf06b2 100644
--- a/build/BuildTargets.targets
+++ b/build/BuildTargets.targets
@@ -3,6 +3,7 @@
$(MSBuildThisFileDirectory)\..\src\Avalonia.Build.Tasks\bin\$(Configuration)\netstandard2.0\Avalonia.Build.Tasks.dll
true
true
+ true
diff --git a/samples/BindingDemo/MainWindow.xaml b/samples/BindingDemo/MainWindow.xaml
index b583503327..08ac0426ea 100644
--- a/samples/BindingDemo/MainWindow.xaml
+++ b/samples/BindingDemo/MainWindow.xaml
@@ -1,8 +1,8 @@
-
+
diff --git a/samples/BindingDemo/TestItemView.xaml b/samples/BindingDemo/TestItemView.xaml
index 46c34c6507..6edade34b2 100644
--- a/samples/BindingDemo/TestItemView.xaml
+++ b/samples/BindingDemo/TestItemView.xaml
@@ -1,8 +1,10 @@
+ xmlns:viewModels="using:BindingDemo.ViewModels"
+ x:Class="BindingDemo.TestItemView"
+ x:DataType="viewModels:TestItem">
-
\ No newline at end of file
+
diff --git a/samples/ControlCatalog/App.xaml b/samples/ControlCatalog/App.xaml
index b228e72f72..5570ada27b 100644
--- a/samples/ControlCatalog/App.xaml
+++ b/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">
diff --git a/samples/ControlCatalog/ControlCatalog.csproj b/samples/ControlCatalog/ControlCatalog.csproj
index 2654574a3e..6b550a30be 100644
--- a/samples/ControlCatalog/ControlCatalog.csproj
+++ b/samples/ControlCatalog/ControlCatalog.csproj
@@ -14,9 +14,6 @@
-
-
-
@@ -35,17 +32,5 @@
-
-
- MSBuild:Compile
-
-
-
-
-
- %(Filename)
-
-
-
diff --git a/samples/ControlCatalog/DecoratedWindow.xaml b/samples/ControlCatalog/DecoratedWindow.xaml
index c778b31c42..997ae54f41 100644
--- a/samples/ControlCatalog/DecoratedWindow.xaml
+++ b/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">
@@ -43,8 +43,13 @@
Hello world!
- Decorated
-
+
+
+ None
+ BorderOnly
+ Full
+
+
CanResize
diff --git a/samples/ControlCatalog/MainView.xaml b/samples/ControlCatalog/MainView.xaml
index 0d7a1ea4d7..b5a09b5fbd 100644
--- a/samples/ControlCatalog/MainView.xaml
+++ b/samples/ControlCatalog/MainView.xaml
@@ -1,9 +1,11 @@
+ xmlns:controls="using:ControlSamples"
+ xmlns:models="using:ControlCatalog.Models"
+ xmlns:pages="using:ControlCatalog.Pages"
+ xmlns:viewModels="using:ControlCatalog.ViewModels"
+ x:DataType="viewModels:MainWindowViewModel">
diff --git a/samples/ControlCatalog/Pages/DataGridPage.xaml b/samples/ControlCatalog/Pages/DataGridPage.xaml
index 27272a9ff7..f1fcd8035a 100644
--- a/samples/ControlCatalog/Pages/DataGridPage.xaml
+++ b/samples/ControlCatalog/Pages/DataGridPage.xaml
@@ -4,13 +4,13 @@
x:Class="ControlCatalog.Pages.DataGridPage">
-
+
-
+
@@ -49,15 +49,15 @@
AlternatingRowBackground="#1fff">
-
-
+
-
-
+
+
+ IsVisible="{Binding #ShowGDP.IsChecked}"
+ x:DataType="local:Country" />
@@ -65,11 +65,11 @@
-
-
-
-
-
+
+
+
+
+
@@ -77,9 +77,9 @@
-
-
-
+
+
+
diff --git a/samples/ControlCatalog/Pages/DateTimePickerPage.xaml b/samples/ControlCatalog/Pages/DateTimePickerPage.xaml
index 6217d39b21..47753f56b6 100644
--- a/samples/ControlCatalog/Pages/DateTimePickerPage.xaml
+++ b/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">
diff --git a/samples/ControlCatalog/Pages/ExpanderPage.xaml b/samples/ControlCatalog/Pages/ExpanderPage.xaml
index 8c8702c665..f0a80fd7ab 100644
--- a/samples/ControlCatalog/Pages/ExpanderPage.xaml
+++ b/samples/ControlCatalog/Pages/ExpanderPage.xaml
@@ -1,6 +1,8 @@
+ xmlns:viewModels="using:ControlCatalog.ViewModels"
+ x:Class="ControlCatalog.Pages.ExpanderPage"
+ x:DataType="viewModels:ExpanderPageViewModel">
Expands to show nested content
diff --git a/samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml b/samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml
index 1d42b92096..5ca4ca9bdd 100644
--- a/samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml
+++ b/samples/ControlCatalog/Pages/ItemsRepeaterPage.xaml
@@ -1,6 +1,8 @@
+ xmlns:viewModels="using:ControlCatalog.ViewModels"
+ x:Class="ControlCatalog.Pages.ItemsRepeaterPage"
+ x:DataType="viewModels:ItemsRepeaterPageViewModel">
diff --git a/samples/ControlCatalog/Pages/NotificationsPage.xaml b/samples/ControlCatalog/Pages/NotificationsPage.xaml
index d48b338fe8..46c1fe52de 100644
--- a/samples/ControlCatalog/Pages/NotificationsPage.xaml
+++ b/samples/ControlCatalog/Pages/NotificationsPage.xaml
@@ -1,6 +1,8 @@
+ xmlns:viewModels="using:ControlCatalog.ViewModels"
+ x:Class="ControlCatalog.Pages.NotificationsPage"
+ x:DataType="viewModels:NotificationViewModel">
diff --git a/samples/ControlCatalog/Pages/NumericUpDownPage.xaml b/samples/ControlCatalog/Pages/NumericUpDownPage.xaml
index 045ba4a059..e76787f184 100644
--- a/samples/ControlCatalog/Pages/NumericUpDownPage.xaml
+++ b/samples/ControlCatalog/Pages/NumericUpDownPage.xaml
@@ -1,8 +1,10 @@
+ xmlns:sys="using:System"
+ xmlns:converter="using:ControlCatalog.Converter"
+ xmlns:pages="using:ControlCatalog.Pages"
+ x:Class="ControlCatalog.Pages.NumericUpDownPage"
+ x:DataType="pages:NumbersPageViewModel">
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.
@@ -43,7 +45,7 @@
VerticalAlignment="Center" Margin="2"/>
CultureInfo:
-
Watermark:
@@ -77,6 +79,7 @@
diff --git a/samples/ControlCatalog/Pages/NumericUpDownPage.xaml.cs b/samples/ControlCatalog/Pages/NumericUpDownPage.xaml.cs
index edd4921632..8785eac354 100644
--- a/samples/ControlCatalog/Pages/NumericUpDownPage.xaml.cs
+++ b/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(c => (c ?? CultureInfo.CurrentCulture).NumberFormat);
}
public class NumbersPageViewModel : ViewModelBase
diff --git a/samples/ControlCatalog/Pages/OpenGlPage.xaml b/samples/ControlCatalog/Pages/OpenGlPage.xaml
index 0eb09004ba..2a97956e30 100644
--- a/samples/ControlCatalog/Pages/OpenGlPage.xaml
+++ b/samples/ControlCatalog/Pages/OpenGlPage.xaml
@@ -1,7 +1,7 @@
+ xmlns:pages="using:ControlCatalog.Pages">
diff --git a/samples/ControlCatalog/Pages/PlatformInfoPage.xaml b/samples/ControlCatalog/Pages/PlatformInfoPage.xaml
index a60f54d10e..f02741d2da 100644
--- a/samples/ControlCatalog/Pages/PlatformInfoPage.xaml
+++ b/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">
diff --git a/samples/ControlCatalog/Pages/ProgressBarPage.xaml b/samples/ControlCatalog/Pages/ProgressBarPage.xaml
index 8e73f1d0f5..dcddcd5965 100644
--- a/samples/ControlCatalog/Pages/ProgressBarPage.xaml
+++ b/samples/ControlCatalog/Pages/ProgressBarPage.xaml
@@ -31,7 +31,7 @@
+ Minimum="{Binding #minimum.Value}" Maximum="{Binding #maximum.Value}"/>
diff --git a/samples/ControlCatalog/Pages/ScrollViewerPage.xaml b/samples/ControlCatalog/Pages/ScrollViewerPage.xaml
index 1b3771ccb5..1903e50ed7 100644
--- a/samples/ControlCatalog/Pages/ScrollViewerPage.xaml
+++ b/samples/ControlCatalog/Pages/ScrollViewerPage.xaml
@@ -1,6 +1,8 @@
+ xmlns:pages="using:ControlCatalog.Pages"
+ x:Class="ControlCatalog.Pages.ScrollViewerPage"
+ x:DataType="pages:ScrollViewerPageViewModel">
Allows for horizontal and vertical content scrolling.
diff --git a/samples/ControlCatalog/Pages/SliderPage.xaml b/samples/ControlCatalog/Pages/SliderPage.xaml
index b2375922c2..9aa4322ad5 100644
--- a/samples/ControlCatalog/Pages/SliderPage.xaml
+++ b/samples/ControlCatalog/Pages/SliderPage.xaml
@@ -1,6 +1,6 @@
A control that lets the user select from a range of values by moving a Thumb control along a Track.
diff --git a/samples/ControlCatalog/Pages/SplitViewPage.xaml b/samples/ControlCatalog/Pages/SplitViewPage.xaml
index 6902b27715..61bfb490b8 100644
--- a/samples/ControlCatalog/Pages/SplitViewPage.xaml
+++ b/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">
@@ -51,7 +53,7 @@
diff --git a/samples/ControlCatalog/Pages/TabControlPage.xaml b/samples/ControlCatalog/Pages/TabControlPage.xaml
index cba6fcd0ad..a830ce69ac 100644
--- a/samples/ControlCatalog/Pages/TabControlPage.xaml
+++ b/samples/ControlCatalog/Pages/TabControlPage.xaml
@@ -1,7 +1,9 @@
+ xmlns="https://github.com/avaloniaui"
+ xmlns:viewModels="using:ControlCatalog.ViewModels"
+ x:DataType="viewModels:TabControlPageViewModel">
-
+
-
+
@@ -68,7 +70,7 @@
-
diff --git a/samples/ControlCatalog/Pages/TabControlPage.xaml.cs b/samples/ControlCatalog/Pages/TabControlPage.xaml.cs
index bd0214c72e..74e9928b24 100644
--- a/samples/ControlCatalog/Pages/TabControlPage.xaml.cs
+++ b/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()!;
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;
- }
}
}
diff --git a/samples/ControlCatalog/Pages/TabStripPage.xaml b/samples/ControlCatalog/Pages/TabStripPage.xaml
index 163665ef92..533590b48d 100644
--- a/samples/ControlCatalog/Pages/TabStripPage.xaml
+++ b/samples/ControlCatalog/Pages/TabStripPage.xaml
@@ -1,6 +1,8 @@
+ xmlns="https://github.com/avaloniaui"
+ xmlns:viewModels="using:ControlCatalog.ViewModels"
+ x:DataType="viewModels:TabControlPageViewModel">
A control which displays a selectable strip of tabs
@@ -16,14 +18,14 @@
Dynamically generated
-
+
-
-
+
diff --git a/samples/ControlCatalog/Pages/TabStripPage.xaml.cs b/samples/ControlCatalog/Pages/TabStripPage.xaml.cs
index 6d7135a90f..20fae13bbf 100644
--- a/samples/ControlCatalog/Pages/TabStripPage.xaml.cs
+++ b/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;
- }
}
}
diff --git a/samples/ControlCatalog/Pages/TextBoxPage.xaml b/samples/ControlCatalog/Pages/TextBoxPage.xaml
index e3d0c5e4e2..6a4d9b7d0e 100644
--- a/samples/ControlCatalog/Pages/TextBoxPage.xaml
+++ b/samples/ControlCatalog/Pages/TextBoxPage.xaml
@@ -1,7 +1,7 @@
+ xmlns:sys="using:System">
diff --git a/samples/ControlCatalog/Pages/TransitioningContentControlPage.axaml b/samples/ControlCatalog/Pages/TransitioningContentControlPage.axaml
index a410577d27..42042652e3 100644
--- a/samples/ControlCatalog/Pages/TransitioningContentControlPage.axaml
+++ b/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">
diff --git a/samples/ControlCatalog/Pages/TreeViewPage.xaml b/samples/ControlCatalog/Pages/TreeViewPage.xaml
index 31f4d73581..1665a59c0a 100644
--- a/samples/ControlCatalog/Pages/TreeViewPage.xaml
+++ b/samples/ControlCatalog/Pages/TreeViewPage.xaml
@@ -1,6 +1,8 @@
+ xmlns:viewModels="using:ControlCatalog.ViewModels"
+ x:Class="ControlCatalog.Pages.TreeViewPage"
+ x:DataType="viewModels:TreeViewPageViewModel">
Displays a hierachical tree of data.
diff --git a/samples/ControlCatalog/Pages/ViewboxPage.xaml b/samples/ControlCatalog/Pages/ViewboxPage.xaml
index e7e3007d35..a31a52d238 100644
--- a/samples/ControlCatalog/Pages/ViewboxPage.xaml
+++ b/samples/ControlCatalog/Pages/ViewboxPage.xaml
@@ -1,6 +1,6 @@
diff --git a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml b/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml
index caab42e98c..f1403905c4 100644
--- a/samples/ControlCatalog/Pages/WindowCustomizationsPage.xaml
+++ b/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">
diff --git a/samples/ControlCatalog/ViewModels/CursorPageViewModel.cs b/samples/ControlCatalog/ViewModels/CursorPageViewModel.cs
index d73ab810eb..8a3f0ba947 100644
--- a/samples/ControlCatalog/ViewModels/CursorPageViewModel.cs
+++ b/samples/ControlCatalog/ViewModels/CursorPageViewModel.cs
@@ -27,18 +27,18 @@ namespace ControlCatalog.ViewModels
public IEnumerable 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; }
}
}
diff --git a/samples/ControlCatalog/ViewModels/ItemsRepeaterPageViewModel.cs b/samples/ControlCatalog/ViewModels/ItemsRepeaterPageViewModel.cs
index 3973c73662..8f8a959867 100644
--- a/samples/ControlCatalog/ViewModels/ItemsRepeaterPageViewModel.cs
+++ b/samples/ControlCatalog/ViewModels/ItemsRepeaterPageViewModel.cs
@@ -10,25 +10,25 @@ namespace ControlCatalog.ViewModels
{
private int _newItemIndex = 1;
private int _newGenerationIndex = 0;
- private ObservableCollection- _items;
+ private ObservableCollection _items;
public ItemsRepeaterPageViewModel()
{
_items = CreateItems();
}
- public ObservableCollection
- Items
+ public ObservableCollection 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
- CreateItems()
+ private ObservableCollection CreateItems()
{
var suffix = _newGenerationIndex == 0 ? string.Empty : $"[{_newGenerationIndex.ToString()}]";
_newGenerationIndex++;
- return new ObservableCollection
- (
- Enumerable.Range(1, 100000).Select(i => new Item(i, $"Item {i.ToString()} {suffix}")));
+ return new ObservableCollection(
+ 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);
}
}
}
diff --git a/samples/ControlCatalog/ViewModels/TabControlPageViewModel.cs b/samples/ControlCatalog/ViewModels/TabControlPageViewModel.cs
new file mode 100644
index 0000000000..b0e560b001
--- /dev/null
+++ b/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;
+}
diff --git a/samples/ControlCatalog/Views/CustomNotificationView.xaml b/samples/ControlCatalog/Views/CustomNotificationView.xaml
index 5b99ed8e4d..f06ea029a8 100644
--- a/samples/ControlCatalog/Views/CustomNotificationView.xaml
+++ b/samples/ControlCatalog/Views/CustomNotificationView.xaml
@@ -1,6 +1,8 @@
+ xmlns:viewModels="using:ControlCatalog.ViewModels"
+ x:Class="ControlCatalog.Views.CustomNotificationView"
+ x:DataType="viewModels:NotificationViewModel">
diff --git a/samples/IntegrationTestApp/MainWindow.axaml b/samples/IntegrationTestApp/MainWindow.axaml
index 76ecfcc622..493a3c6567 100644
--- a/samples/IntegrationTestApp/MainWindow.axaml
+++ b/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">
diff --git a/samples/IntegrationTestApp/ShowWindowTest.axaml b/samples/IntegrationTestApp/ShowWindowTest.axaml
index 17c359df51..68d1f3cf2f 100644
--- a/samples/IntegrationTestApp/ShowWindowTest.axaml
+++ b/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">
diff --git a/samples/MobileSandbox/App.xaml b/samples/MobileSandbox/App.xaml
index f3210e8941..85c97c9dbe 100644
--- a/samples/MobileSandbox/App.xaml
+++ b/samples/MobileSandbox/App.xaml
@@ -1,6 +1,5 @@
diff --git a/samples/MobileSandbox/MainView.xaml b/samples/MobileSandbox/MainView.xaml
index 5f9f41f3a9..1eab13aa75 100644
--- a/samples/MobileSandbox/MainView.xaml
+++ b/samples/MobileSandbox/MainView.xaml
@@ -1,6 +1,8 @@
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
+ xmlns:mobileSandbox="using:MobileSandbox"
+ x:DataType="mobileSandbox:MainView">
diff --git a/samples/MobileSandbox/Views/CustomNotificationView.xaml b/samples/MobileSandbox/Views/CustomNotificationView.xaml
index 29033ca5df..f07116583c 100644
--- a/samples/MobileSandbox/Views/CustomNotificationView.xaml
+++ b/samples/MobileSandbox/Views/CustomNotificationView.xaml
@@ -7,12 +7,12 @@
-
+
-
-
+
+
-
+
diff --git a/samples/RenderDemo/MainWindow.xaml b/samples/RenderDemo/MainWindow.xaml
index 823a0fbbef..20cc6c43e1 100644
--- a/samples/RenderDemo/MainWindow.xaml
+++ b/samples/RenderDemo/MainWindow.xaml
@@ -1,9 +1,11 @@
diff --git a/samples/RenderDemo/Pages/AnimationsPage.xaml b/samples/RenderDemo/Pages/AnimationsPage.xaml
index 9043bac33e..3f89a9d5f7 100644
--- a/samples/RenderDemo/Pages/AnimationsPage.xaml
+++ b/samples/RenderDemo/Pages/AnimationsPage.xaml
@@ -1,7 +1,9 @@
diff --git a/samples/RenderDemo/Pages/CustomAnimatorPage.xaml b/samples/RenderDemo/Pages/CustomAnimatorPage.xaml
index b386636cae..0c625b6a77 100644
--- a/samples/RenderDemo/Pages/CustomAnimatorPage.xaml
+++ b/samples/RenderDemo/Pages/CustomAnimatorPage.xaml
@@ -1,7 +1,7 @@
diff --git a/samples/RenderDemo/Pages/GlyphRunPage.xaml b/samples/RenderDemo/Pages/GlyphRunPage.xaml
index 7db58e5286..e267b458bd 100644
--- a/samples/RenderDemo/Pages/GlyphRunPage.xaml
+++ b/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">
diff --git a/samples/RenderDemo/Pages/Transform3DPage.axaml b/samples/RenderDemo/Pages/Transform3DPage.axaml
index 30ed35bbac..7f3636648c 100644
--- a/samples/RenderDemo/Pages/Transform3DPage.axaml
+++ b/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">
diff --git a/samples/RenderDemo/Pages/TransitionsPage.xaml b/samples/RenderDemo/Pages/TransitionsPage.xaml
index 71b6ea0713..006c2eb20b 100644
--- a/samples/RenderDemo/Pages/TransitionsPage.xaml
+++ b/samples/RenderDemo/Pages/TransitionsPage.xaml
@@ -1,7 +1,9 @@
diff --git a/samples/SampleControls/HamburgerMenu/HamburgerMenu.xaml b/samples/SampleControls/HamburgerMenu/HamburgerMenu.xaml
index fbc51414e3..f36b79224a 100644
--- a/samples/SampleControls/HamburgerMenu/HamburgerMenu.xaml
+++ b/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=''}">
diff --git a/src/Avalonia.Diagnostics/Diagnostics/Views/LayoutExplorerView.axaml b/src/Avalonia.Diagnostics/Diagnostics/Views/LayoutExplorerView.axaml
index c404a5c382..0d2e739b2b 100644
--- a/src/Avalonia.Diagnostics/Diagnostics/Views/LayoutExplorerView.axaml
+++ b/src/Avalonia.Diagnostics/Diagnostics/Views/LayoutExplorerView.axaml
@@ -1,9 +1,10 @@
+ xmlns:controls="using:Avalonia.Diagnostics.Controls"
+ xmlns:converters="using:Avalonia.Diagnostics.Converters"
+ xmlns:viewModels="using:Avalonia.Diagnostics.ViewModels"
+ x:DataType="viewModels:ControlLayoutViewModel">
diff --git a/src/Avalonia.Diagnostics/Diagnostics/Views/MainView.xaml b/src/Avalonia.Diagnostics/Diagnostics/Views/MainView.xaml
index a6da929da3..97e21079c1 100644
--- a/src/Avalonia.Diagnostics/Diagnostics/Views/MainView.xaml
+++ b/src/Avalonia.Diagnostics/Diagnostics/Views/MainView.xaml
@@ -1,7 +1,9 @@
+ xmlns:views="using:Avalonia.Diagnostics.Views"
+ xmlns:viewModels="using:Avalonia.Diagnostics.ViewModels"
+ x:Class="Avalonia.Diagnostics.Views.MainView"
+ x:DataType="viewModels:MainViewModel">
diff --git a/src/Avalonia.Themes.Fluent/Controls/ProgressBar.xaml b/src/Avalonia.Themes.Fluent/Controls/ProgressBar.xaml
index dc591ede12..253d85852e 100644
--- a/src/Avalonia.Themes.Fluent/Controls/ProgressBar.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/ProgressBar.xaml
@@ -1,7 +1,6 @@
+ xmlns:converters="using:Avalonia.Controls.Converters">
diff --git a/src/Avalonia.Themes.Fluent/Controls/ScrollViewer.xaml b/src/Avalonia.Themes.Fluent/Controls/ScrollViewer.xaml
index 2c727b4435..71df4d419f 100644
--- a/src/Avalonia.Themes.Fluent/Controls/ScrollViewer.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/ScrollViewer.xaml
@@ -1,7 +1,6 @@
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
diff --git a/src/Avalonia.Themes.Fluent/Controls/Slider.xaml b/src/Avalonia.Themes.Fluent/Controls/Slider.xaml
index f2351dd5be..1e3f51f7ef 100644
--- a/src/Avalonia.Themes.Fluent/Controls/Slider.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/Slider.xaml
@@ -1,6 +1,6 @@
+ xmlns:sys="using:System">
diff --git a/src/Avalonia.Themes.Fluent/Controls/SplitButton.xaml b/src/Avalonia.Themes.Fluent/Controls/SplitButton.xaml
index 9a93b2625b..1a7e72462a 100644
--- a/src/Avalonia.Themes.Fluent/Controls/SplitButton.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/SplitButton.xaml
@@ -1,6 +1,5 @@
diff --git a/src/Avalonia.Themes.Fluent/Controls/TabItem.xaml b/src/Avalonia.Themes.Fluent/Controls/TabItem.xaml
index c8376480d0..b11ad4e03a 100644
--- a/src/Avalonia.Themes.Fluent/Controls/TabItem.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/TabItem.xaml
@@ -1,7 +1,6 @@
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
diff --git a/src/Avalonia.Themes.Fluent/Controls/TabStripItem.xaml b/src/Avalonia.Themes.Fluent/Controls/TabStripItem.xaml
index fab8ba87aa..d5440025ae 100644
--- a/src/Avalonia.Themes.Fluent/Controls/TabStripItem.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/TabStripItem.xaml
@@ -1,7 +1,6 @@
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
diff --git a/src/Avalonia.Themes.Fluent/Controls/TextBox.xaml b/src/Avalonia.Themes.Fluent/Controls/TextBox.xaml
index 224264b51d..c6da9f72a3 100644
--- a/src/Avalonia.Themes.Fluent/Controls/TextBox.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/TextBox.xaml
@@ -1,6 +1,5 @@
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
@@ -240,7 +239,7 @@
+ IsVisible="{Binding !$parent[ToggleButton].IsChecked}"/>
diff --git a/src/Avalonia.Themes.Fluent/Controls/TimePicker.xaml b/src/Avalonia.Themes.Fluent/Controls/TimePicker.xaml
index 2414ce096e..71ff0eaebc 100644
--- a/src/Avalonia.Themes.Fluent/Controls/TimePicker.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/TimePicker.xaml
@@ -7,8 +7,7 @@
+ xmlns:sys="using:System">
diff --git a/src/Avalonia.Themes.Fluent/Controls/ToggleSwitch.xaml b/src/Avalonia.Themes.Fluent/Controls/ToggleSwitch.xaml
index 90993fcc64..c88839f7d2 100644
--- a/src/Avalonia.Themes.Fluent/Controls/ToggleSwitch.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/ToggleSwitch.xaml
@@ -1,7 +1,6 @@
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
diff --git a/src/Avalonia.Themes.Fluent/Controls/ToolTip.xaml b/src/Avalonia.Themes.Fluent/Controls/ToolTip.xaml
index bc9dceb545..8b086a8d10 100644
--- a/src/Avalonia.Themes.Fluent/Controls/ToolTip.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/ToolTip.xaml
@@ -1,7 +1,6 @@
+ xmlns:sys="using:System">
diff --git a/src/Avalonia.Themes.Fluent/Controls/TreeViewItem.xaml b/src/Avalonia.Themes.Fluent/Controls/TreeViewItem.xaml
index 83abe7848c..9171791a0f 100644
--- a/src/Avalonia.Themes.Fluent/Controls/TreeViewItem.xaml
+++ b/src/Avalonia.Themes.Fluent/Controls/TreeViewItem.xaml
@@ -1,6 +1,6 @@
+ xmlns:converters="using:Avalonia.Controls.Converters">
diff --git a/src/Avalonia.Themes.Fluent/FluentDark.xaml b/src/Avalonia.Themes.Fluent/FluentDark.xaml
index 50b12efd78..aad71b18fa 100644
--- a/src/Avalonia.Themes.Fluent/FluentDark.xaml
+++ b/src/Avalonia.Themes.Fluent/FluentDark.xaml
@@ -1,6 +1,6 @@
+ xmlns:sys="using:System">
diff --git a/src/Avalonia.Themes.Fluent/FluentLight.xaml b/src/Avalonia.Themes.Fluent/FluentLight.xaml
index feb043c5f3..907efe7ee6 100644
--- a/src/Avalonia.Themes.Fluent/FluentLight.xaml
+++ b/src/Avalonia.Themes.Fluent/FluentLight.xaml
@@ -1,6 +1,6 @@
+ xmlns:sys="using:System">
diff --git a/src/Avalonia.Themes.Simple/Controls/ButtonSpinner.xaml b/src/Avalonia.Themes.Simple/Controls/ButtonSpinner.xaml
index 9798e5290b..57d6eabea4 100644
--- a/src/Avalonia.Themes.Simple/Controls/ButtonSpinner.xaml
+++ b/src/Avalonia.Themes.Simple/Controls/ButtonSpinner.xaml
@@ -1,6 +1,5 @@
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
+ xmlns:sys="using:System">
diff --git a/src/Avalonia.Themes.Simple/Controls/CalendarItem.xaml b/src/Avalonia.Themes.Simple/Controls/CalendarItem.xaml
index 2a9ae7cf8d..f022746bf5 100644
--- a/src/Avalonia.Themes.Simple/Controls/CalendarItem.xaml
+++ b/src/Avalonia.Themes.Simple/Controls/CalendarItem.xaml
@@ -162,7 +162,7 @@
-
+
+ xmlns:sys="using:System">
diff --git a/src/Avalonia.Themes.Simple/Controls/DateTimePickerShared.xaml b/src/Avalonia.Themes.Simple/Controls/DateTimePickerShared.xaml
index 8639a2baa2..5f1dea692f 100644
--- a/src/Avalonia.Themes.Simple/Controls/DateTimePickerShared.xaml
+++ b/src/Avalonia.Themes.Simple/Controls/DateTimePickerShared.xaml
@@ -6,9 +6,7 @@
-->
+ xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
diff --git a/src/Avalonia.Themes.Simple/Controls/ManagedFileChooser.xaml b/src/Avalonia.Themes.Simple/Controls/ManagedFileChooser.xaml
index 3416b5406e..f9cf162037 100644
--- a/src/Avalonia.Themes.Simple/Controls/ManagedFileChooser.xaml
+++ b/src/Avalonia.Themes.Simple/Controls/ManagedFileChooser.xaml
@@ -1,6 +1,6 @@
+ xmlns:dialogs="using:Avalonia.Dialogs">
-
+
diff --git a/src/Avalonia.Themes.Simple/Controls/NativeMenuBar.xaml b/src/Avalonia.Themes.Simple/Controls/NativeMenuBar.xaml
index 8c51ec8609..160acd5872 100644
--- a/src/Avalonia.Themes.Simple/Controls/NativeMenuBar.xaml
+++ b/src/Avalonia.Themes.Simple/Controls/NativeMenuBar.xaml
@@ -1,6 +1,6 @@
+ xmlns:default="using:Avalonia.Themes.Simple">
@@ -11,16 +11,17 @@
diff --git a/src/Avalonia.Themes.Simple/Controls/ProgressBar.xaml b/src/Avalonia.Themes.Simple/Controls/ProgressBar.xaml
index 5adb5bde7e..3eb158d5b6 100644
--- a/src/Avalonia.Themes.Simple/Controls/ProgressBar.xaml
+++ b/src/Avalonia.Themes.Simple/Controls/ProgressBar.xaml
@@ -1,6 +1,6 @@
+ xmlns:converters="using:Avalonia.Controls.Converters">
diff --git a/src/Avalonia.Themes.Simple/Controls/SplitButton.xaml b/src/Avalonia.Themes.Simple/Controls/SplitButton.xaml
index f0d22aac97..3c621a981d 100644
--- a/src/Avalonia.Themes.Simple/Controls/SplitButton.xaml
+++ b/src/Avalonia.Themes.Simple/Controls/SplitButton.xaml
@@ -1,6 +1,5 @@