From 0965f9d1f82e4504ad4824b2ba7a8dcc60d801ab Mon Sep 17 00:00:00 2001 From: rabbitism Date: Fri, 23 Feb 2024 17:51:05 +0800 Subject: [PATCH] feat: add separator support, fix various issues. --- .../ToolBarItemTemplateSelector.cs | 11 +++-- demo/Ursa.Demo/Pages/ToolBarDemo.axaml | 2 + .../ViewModels/ToolBarDemoViewModel.cs | 8 +++- src/Ursa.Themes.Semi/Controls/ToolBar.axaml | 23 ++++++++++- src/Ursa.Themes.Semi/Styles/ToolBar.axaml | 26 ++++++++++++ src/Ursa.Themes.Semi/Styles/_index.axaml | 1 + src/Ursa/Controls/ToolBar/ToolBar.cs | 6 ++- src/Ursa/Controls/ToolBar/ToolBarPanel.cs | 16 ++++++++ src/Ursa/Controls/ToolBar/ToolBarSeparator.cs | 41 +++++++++++++++++++ 9 files changed, 127 insertions(+), 7 deletions(-) create mode 100644 src/Ursa.Themes.Semi/Styles/ToolBar.axaml create mode 100644 src/Ursa/Controls/ToolBar/ToolBarSeparator.cs diff --git a/demo/Ursa.Demo/DataTemplates/ToolBarItemTemplateSelector.cs b/demo/Ursa.Demo/DataTemplates/ToolBarItemTemplateSelector.cs index d32c872..bfd9c76 100644 --- a/demo/Ursa.Demo/DataTemplates/ToolBarItemTemplateSelector.cs +++ b/demo/Ursa.Demo/DataTemplates/ToolBarItemTemplateSelector.cs @@ -9,17 +9,22 @@ namespace Ursa.Demo.Converters; public class ToolBarItemTemplateSelector: IDataTemplate { + public static ToolBarItemTemplateSelector Instance { get; } = new(); public Control? Build(object? param) { if (param is null) return null; + if (param is ToolBarSeparatorViewModel sep) + { + return new ToolBarSeparator(); + } if (param is ToolBarButtonItemViewModel vm) { return new Button() { [!ContentControl.ContentProperty] = new Binding() { Path = "Content" }, [!Button.CommandProperty] = new Binding() { Path = "Command" }, - //[!ToolBar.OverflowModeProperty] = new Binding(){ Path = "OverflowMode" } + [!ToolBar.OverflowModeProperty] = new Binding(){Path = nameof(ToolBarItemViewModel.OverflowMode)}, }; } if (param is ToolBarCheckBoxItemViweModel cb) @@ -28,7 +33,7 @@ public class ToolBarItemTemplateSelector: IDataTemplate { [!ContentControl.ContentProperty] = new Binding() { Path = "Content" }, [!ToggleButton.IsCheckedProperty] = new Binding() { Path = "IsChecked" }, - //[!ToolBar.OverflowModeProperty] = new Binding(){ Path = "OverflowMode" } + [!ToolBar.OverflowModeProperty] = new Binding(){Path = nameof(ToolBarItemViewModel.OverflowMode)}, }; } if (param is ToolBarComboBoxItemViewModel combo) @@ -38,7 +43,7 @@ public class ToolBarItemTemplateSelector: IDataTemplate [!ContentControl.ContentProperty] = new Binding() { Path = "Content" }, [!SelectingItemsControl.SelectedItemProperty] = new Binding() { Path = "SelectedItem" }, [!ItemsControl.ItemsSourceProperty] = new Binding() { Path = "Items" }, - [ToolBar.OverflowModeProperty] = OverflowMode.Always, + [!ToolBar.OverflowModeProperty] = new Binding(){Path = nameof(ToolBarItemViewModel.OverflowMode)}, }; } return new Button() { Content = "Undefined Item" }; diff --git a/demo/Ursa.Demo/Pages/ToolBarDemo.axaml b/demo/Ursa.Demo/Pages/ToolBarDemo.axaml index d56843e..0496812 100644 --- a/demo/Ursa.Demo/Pages/ToolBarDemo.axaml +++ b/demo/Ursa.Demo/Pages/ToolBarDemo.axaml @@ -18,8 +18,10 @@ DockPanel.Dock="Top" Header="Hello World">