diff --git a/MaterialDesign3.Demo.Wpf/Domain/DemoItem.cs b/MaterialDesign3.Demo.Wpf/Domain/DemoItem.cs index eed64d9002..54abf68f97 100644 --- a/MaterialDesign3.Demo.Wpf/Domain/DemoItem.cs +++ b/MaterialDesign3.Demo.Wpf/Domain/DemoItem.cs @@ -2,6 +2,7 @@ using System.Collections.Generic; using System.Windows; using System.Windows.Controls; +using MaterialDesignThemes.Wpf; namespace MaterialDesign3Demo.Domain { @@ -15,12 +16,17 @@ public class DemoItem : ViewModelBase private ScrollBarVisibility _verticalScrollBarVisibilityRequirement = ScrollBarVisibility.Auto; private Thickness _marginRequirement = new(16); - public DemoItem(string name, Type contentType, IEnumerable documentation, object? dataContext = null) + private int _notificationNumber = 0; + + public DemoItem(string name, Type contentType, IEnumerable documentation, + PackIconKind selectedIcon, PackIconKind unselectedIcon, object? dataContext = null) { Name = name; _contentType = contentType; _dataContext = dataContext; Documentation = documentation; + SelectedIcon = selectedIcon; + UnselectedIcon = unselectedIcon; } public string Name { get; } @@ -29,6 +35,18 @@ public DemoItem(string name, Type contentType, IEnumerable do public object? Content => _content ??= CreateContent(); + public PackIconKind SelectedIcon { get; set; } + public PackIconKind UnselectedIcon { get; set; } + + public object? Notifications + { + get + { + if (_notificationNumber == 0) return null; + else return _notificationNumber < 100 ? _notificationNumber : "99+"; + } + } + public ScrollBarVisibility HorizontalScrollBarVisibilityRequirement { get => _horizontalScrollBarVisibilityRequirement; @@ -57,5 +75,17 @@ public Thickness MarginRequirement return content; } + + public void AddNewNotification() + { + _notificationNumber++; + OnPropertyChanged(nameof(Notifications)); + } + + public void DismissAllNotifications() + { + _notificationNumber = 0; + OnPropertyChanged(nameof(Notifications)); + } } } diff --git a/MaterialDesign3.Demo.Wpf/Domain/MainWindowViewModel.cs b/MaterialDesign3.Demo.Wpf/Domain/MainWindowViewModel.cs index d294e06d51..65bb68b20a 100644 --- a/MaterialDesign3.Demo.Wpf/Domain/MainWindowViewModel.cs +++ b/MaterialDesign3.Demo.Wpf/Domain/MainWindowViewModel.cs @@ -16,9 +16,9 @@ public class MainWindowViewModel : ViewModelBase { public MainWindowViewModel(ISnackbarMessageQueue snackbarMessageQueue) { - DemoItems = new ObservableCollection(new[] + DemoItems = new ObservableCollection { - new DemoItem( + new DemoItem( "Home", typeof(Home), new[] @@ -28,15 +28,25 @@ public MainWindowViewModel(ISnackbarMessageQueue snackbarMessageQueue) $"{ConfigurationManager.AppSettings["GitHub"]}/wiki", "WIKI"), DocumentationLink.DemoPageLink() - } - ) - }); + }, + selectedIcon: PackIconKind.Home, + unselectedIcon: PackIconKind.HomeOutline) + }; foreach (var item in GenerateDemoItems(snackbarMessageQueue).OrderBy(i => i.Name)) { DemoItems.Add(item); } + MainDemoItems = new ObservableCollection + { + DemoItems.First(x => x.Name == "Home"), + DemoItems.First(x => x.Name == "Buttons"), + DemoItems.First(x => x.Name == "Toggles"), + DemoItems.First(x => x.Name == "Fields"), + DemoItems.First(x => x.Name == "Pickers") + }; + _demoItemsView = CollectionViewSource.GetDefaultView(DemoItems); _demoItemsView.Filter = DemoItemsFilter; @@ -66,6 +76,15 @@ public MainWindowViewModel(ISnackbarMessageQueue snackbarMessageQueue) SelectedIndex++; }, _ => SelectedIndex < DemoItems.Count - 1); + + DismissAllNotificationsCommand = new AnotherCommandImplementation( + _ => DemoItems[0].DismissAllNotifications(), + _ => DemoItems[0].Notifications != null); + + AddNewNotificationCommand = new AnotherCommandImplementation( + _ => DemoItems[0].AddNewNotification()); + + AddNewNotificationCommand.Execute(new object()); } private readonly ICollectionView _demoItemsView; @@ -87,6 +106,7 @@ public string? SearchKeyword } public ObservableCollection DemoItems { get; } + public ObservableCollection MainDemoItems { get; } public DemoItem? SelectedItem { @@ -109,6 +129,8 @@ public bool ControlsEnabled public AnotherCommandImplementation HomeCommand { get; } public AnotherCommandImplementation MovePrevCommand { get; } public AnotherCommandImplementation MoveNextCommand { get; } + public AnotherCommandImplementation DismissAllNotificationsCommand { get; } + public AnotherCommandImplementation AddNewNotificationCommand { get; } private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue snackbarMessageQueue) { @@ -126,7 +148,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.DemoPageLink("Demo View"), DocumentationLink.DemoPageLink("Demo View Model"), DocumentationLink.ApiLink() - }); + }, + selectedIcon: PackIconKind.Palette, + unselectedIcon: PackIconKind.PaletteOutline); yield return new DemoItem( "Color Tool", @@ -139,7 +163,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.DemoPageLink("Demo View"), DocumentationLink.DemoPageLink("Demo View Model"), DocumentationLink.ApiLink() - }); + }, + selectedIcon: PackIconKind.Eyedropper, + unselectedIcon: PackIconKind.EyedropperVariant); yield return new DemoItem( "Buttons", @@ -152,7 +178,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.StyleLink("Button"), DocumentationLink.StyleLink("PopupBox"), DocumentationLink.ApiLink() - }); + }, + selectedIcon: PackIconKind.GestureTapHold, + unselectedIcon: PackIconKind.GestureTapHold); yield return new DemoItem( "Toggles", @@ -163,7 +191,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.StyleLink("ToggleButton"), DocumentationLink.StyleLink("CheckBox"), DocumentationLink.ApiLink() - }); + }, + selectedIcon: PackIconKind.ToggleSwitch, + unselectedIcon: PackIconKind.ToggleSwitchOffOutline); yield return new DemoItem( "Rating Bar", @@ -173,7 +203,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.DemoPageLink(), DocumentationLink.StyleLink("RatingBar"), DocumentationLink.ApiLink() - }); + }, + selectedIcon: PackIconKind.Star, + unselectedIcon: PackIconKind.StarOutline); yield return new DemoItem( "Fields", @@ -182,7 +214,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna { DocumentationLink.DemoPageLink(), DocumentationLink.StyleLink("TextBox") - }); + }, + selectedIcon: PackIconKind.Pencil, + unselectedIcon: PackIconKind.PencilOutline); yield return new DemoItem( "Fields line up", @@ -190,7 +224,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna new[] { DocumentationLink.DemoPageLink() - }); + }, + selectedIcon: PackIconKind.PencilBox, + unselectedIcon: PackIconKind.PencilBoxOutline); yield return new DemoItem( "ComboBoxes", @@ -199,7 +235,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna { DocumentationLink.DemoPageLink(), DocumentationLink.StyleLink("ComboBox") - }); + }, + selectedIcon: PackIconKind.CheckboxMarked, + unselectedIcon: PackIconKind.CheckboxMarkedOutline); yield return new DemoItem( "Pickers", @@ -210,7 +248,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.StyleLink("Clock"), DocumentationLink.StyleLink("DatePicker"), DocumentationLink.ApiLink() - }); + }, + selectedIcon: PackIconKind.Clock, + unselectedIcon: PackIconKind.ClockOutline); yield return new DemoItem( "Sliders", @@ -219,7 +259,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna { DocumentationLink.DemoPageLink(), DocumentationLink.StyleLink("Slider") - }); + }, + selectedIcon: PackIconKind.TuneVariant, + unselectedIcon: PackIconKind.TuneVariant); yield return new DemoItem( "Chips", @@ -229,7 +271,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.DemoPageLink(), DocumentationLink.StyleLink("Chip"), DocumentationLink.ApiLink() - }); + }, + selectedIcon: PackIconKind.None, + unselectedIcon: PackIconKind.None); yield return new DemoItem( "Typography", @@ -238,7 +282,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna { DocumentationLink.DemoPageLink(), DocumentationLink.StyleLink("TextBlock") - }) + }, + selectedIcon: PackIconKind.FormatSize, + unselectedIcon: PackIconKind.FormatTitle) { HorizontalScrollBarVisibilityRequirement = ScrollBarVisibility.Auto }; @@ -251,7 +297,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.DemoPageLink(), DocumentationLink.StyleLink("Card"), DocumentationLink.ApiLink() - }); + }, + selectedIcon: PackIconKind.Card, + unselectedIcon: PackIconKind.CardOutline); yield return new DemoItem( "Icon Pack", @@ -262,6 +310,8 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.DemoPageLink("Demo View Model"), DocumentationLink.ApiLink() }, + selectedIcon: PackIconKind.Robot, + unselectedIcon: PackIconKind.RobotOutline, new IconPackViewModel(snackbarMessageQueue)) { VerticalScrollBarVisibilityRequirement = ScrollBarVisibility.Disabled @@ -274,7 +324,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna { DocumentationLink.DemoPageLink(), DocumentationLink.ApiLink() - }); + }, + selectedIcon: PackIconKind.Subtitles, + unselectedIcon: PackIconKind.SubtitlesOutline); yield return new DemoItem( "Lists", @@ -285,7 +337,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.DemoPageLink("Demo View Model", "Domain"), DocumentationLink.StyleLink("ListBox"), DocumentationLink.StyleLink("ListView") - }); + }, + selectedIcon: PackIconKind.FormatListBulletedSquare, + unselectedIcon: PackIconKind.FormatListCheckbox); yield return new DemoItem( "Trees", @@ -295,7 +349,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.DemoPageLink("Demo View"), DocumentationLink.DemoPageLink("Demo View Model"), DocumentationLink.StyleLink("TreeView") - }); + }, + selectedIcon: PackIconKind.FileTree, + unselectedIcon: PackIconKind.FileTreeOutline); yield return new DemoItem( "Data Grids", @@ -305,7 +361,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.DemoPageLink("Demo View"), DocumentationLink.DemoPageLink("Demo View Model", "Domain"), DocumentationLink.StyleLink("DataGrid") - }); + }, + selectedIcon: PackIconKind.ViewGrid, + unselectedIcon: PackIconKind.ViewGridOutline); yield return new DemoItem( "Expander", @@ -314,7 +372,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna { DocumentationLink.DemoPageLink(), DocumentationLink.StyleLink("Expander") - }); + }, + selectedIcon: PackIconKind.UnfoldMoreHorizontal, + unselectedIcon: PackIconKind.UnfoldMoreHorizontal); yield return new DemoItem( "Group Boxes", @@ -323,7 +383,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna { DocumentationLink.DemoPageLink(), DocumentationLink.StyleLink("GroupBox") - }); + }, + selectedIcon: PackIconKind.TextBoxMultiple, + unselectedIcon: PackIconKind.TextBoxMultipleOutline); yield return new DemoItem( "Menus & Tool Bars", @@ -333,7 +395,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.DemoPageLink(), DocumentationLink.StyleLink("Menu"), DocumentationLink.StyleLink("ToolBar") - }); + }, + selectedIcon: PackIconKind.DotsHorizontalCircle, + unselectedIcon: PackIconKind.DotsHorizontalCircleOutline); yield return new DemoItem( "Progress Indicators", @@ -342,16 +406,37 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna { DocumentationLink.DemoPageLink(), DocumentationLink.StyleLink("ProgressBar") - }); + }, + selectedIcon: PackIconKind.ProgressClock, + unselectedIcon: PackIconKind.ProgressClock); yield return new DemoItem( "Navigation Rail", typeof(NavigationRail), new[] { - DocumentationLink.DemoPageLink("Demo View"), - DocumentationLink.StyleLink("TabControl"), - }); + DocumentationLink.DemoPageLink(), + DocumentationLink.StyleLink("NavigaionRail"), + }, + selectedIcon: PackIconKind.NavigationVariant, + unselectedIcon: PackIconKind.NavigationVariantOutline) + { + HorizontalScrollBarVisibilityRequirement = ScrollBarVisibility.Auto + }; + + yield return new DemoItem( + "Navigation Bar", + typeof(NavigationBar), + new[] + { + DocumentationLink.DemoPageLink(), + DocumentationLink.StyleLink("NavigaionBar"), + }, + selectedIcon: PackIconKind.NavigationVariant, + unselectedIcon: PackIconKind.NavigationVariantOutline) + { + HorizontalScrollBarVisibilityRequirement = ScrollBarVisibility.Auto + }; yield return new DemoItem( "Dialogs", @@ -362,7 +447,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.DemoPageLink("Demo View"), DocumentationLink.DemoPageLink("Demo View Model", "Domain"), DocumentationLink.ApiLink() - }) + }, + selectedIcon: PackIconKind.CommentAlert, + unselectedIcon: PackIconKind.CommentAlertOutline) { HorizontalScrollBarVisibilityRequirement = ScrollBarVisibility.Auto }; @@ -374,7 +461,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna { DocumentationLink.DemoPageLink("Demo View"), DocumentationLink.ApiLink() - }); + }, + selectedIcon: PackIconKind.ExpandAll, + unselectedIcon: PackIconKind.ExpandAll); yield return new DemoItem( "Snackbar", @@ -386,7 +475,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.StyleLink("Snackbar"), DocumentationLink.ApiLink(), DocumentationLink.ApiLink() - }) + }, + selectedIcon: PackIconKind.InformationCircle, + unselectedIcon: PackIconKind.InformationCircleOutline) { HorizontalScrollBarVisibilityRequirement = ScrollBarVisibility.Auto }; @@ -401,7 +492,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna DocumentationLink.ApiLink("Transitions"), DocumentationLink.ApiLink("Transitions"), DocumentationLink.ApiLink("Transitions"), - }); + }, + selectedIcon: PackIconKind.TransitionMasked, + unselectedIcon: PackIconKind.Transition); yield return new DemoItem( "Shadows", @@ -409,7 +502,9 @@ private static IEnumerable GenerateDemoItems(ISnackbarMessageQueue sna new[] { DocumentationLink.DemoPageLink(), - }); + }, + selectedIcon: PackIconKind.BoxShadow, + unselectedIcon: PackIconKind.BoxShadow); } private bool DemoItemsFilter(object obj) diff --git a/MaterialDesign3.Demo.Wpf/Domain/SampleItem.cs b/MaterialDesign3.Demo.Wpf/Domain/SampleItem.cs new file mode 100644 index 0000000000..da3e612898 --- /dev/null +++ b/MaterialDesign3.Demo.Wpf/Domain/SampleItem.cs @@ -0,0 +1,18 @@ +using MaterialDesignThemes.Wpf; + +namespace MaterialDesign3Demo.Domain; + +public class SampleItem : ViewModelBase +{ + public string? Title { get; set; } + public PackIconKind SelectedIcon { get; set; } + public PackIconKind UnselectedIcon { get; set; } + private object? _notification = null; + + public object? Notification + { + get { return _notification; } + set { SetProperty(ref _notification, value); } + } + +} diff --git a/MaterialDesign3.Demo.Wpf/Home.xaml b/MaterialDesign3.Demo.Wpf/Home.xaml index e22494b8e2..1d785b3094 100644 --- a/MaterialDesign3.Demo.Wpf/Home.xaml +++ b/MaterialDesign3.Demo.Wpf/Home.xaml @@ -65,13 +65,13 @@ - + - + - - + --> diff --git a/MaterialDesign3.Demo.Wpf/MainWindow.xaml b/MaterialDesign3.Demo.Wpf/MainWindow.xaml index 7e32c0c367..0af5eaa0c0 100644 --- a/MaterialDesign3.Demo.Wpf/MainWindow.xaml +++ b/MaterialDesign3.Demo.Wpf/MainWindow.xaml @@ -12,14 +12,14 @@ WindowStartupLocation="CenterScreen" Title="Material Design in XAML" AutomationProperties.Name="{Binding Title, RelativeSource={RelativeSource Self}}" - Height="800" + Height="800" SizeChanged="Window_SizeChanged" Width="1100" Style="{StaticResource MaterialDesignWindow}" Icon="favicon.ico"> - + @@ -44,74 +44,112 @@ - + - - + + - + + + + + + + + + - + materialDesign:TextFieldAssist.TextFieldCornerRadius="8"/> + AutomationProperties.Name="DemoPagesListBox"> + + - - + + + + + + + - - + + + + + + + + AutomationProperties.Name="HamburgerToggleButton" + Margin="5 0 24 0"/> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MaterialDesign3.Demo.Wpf/MainWindow.xaml.cs b/MaterialDesign3.Demo.Wpf/MainWindow.xaml.cs index e2b26e0d74..7a4d8c2bb6 100644 --- a/MaterialDesign3.Demo.Wpf/MainWindow.xaml.cs +++ b/MaterialDesign3.Demo.Wpf/MainWindow.xaml.cs @@ -8,6 +8,7 @@ using System.Windows.Controls.Primitives; using System.Windows.Input; using System.Windows.Media; +using System.Configuration; namespace MaterialDesign3Demo { @@ -43,16 +44,19 @@ public MainWindow() private void UIElement_OnPreviewMouseLeftButtonUp(object sender, MouseButtonEventArgs e) { - //until we had a StaysOpen glag to Drawer, this will help with scroll bars - var dependencyObject = Mouse.Captured as DependencyObject; - - while (dependencyObject != null) + if (NavDrawer.OpenMode is not DrawerHostOpenMode.Standard) { - if (dependencyObject is ScrollBar) return; - dependencyObject = VisualTreeHelper.GetParent(dependencyObject); - } + //until we had a StaysOpen glag to Drawer, this will help with scroll bars + var dependencyObject = Mouse.Captured as DependencyObject; + + while (dependencyObject != null) + { + if (dependencyObject is ScrollBar) return; + dependencyObject = VisualTreeHelper.GetParent(dependencyObject); + } - MenuToggleButton.IsChecked = false; + MenuToggleButton.IsChecked = false; + } } private async void MenuPopupButton_OnClick(object sender, RoutedEventArgs e) @@ -80,10 +84,19 @@ private void OnCopy(object sender, ExecutedRoutedEventArgs e) } } - private void MenuToggleButton_OnClick(object sender, RoutedEventArgs e) - => DemoItemsSearchBox.Focus(); + private void MenuToggleButton_OnClick(object sender, RoutedEventArgs e) + { + DemoItemsSearchBox.Focus(); + if (ActualWidth > 1600) + { + NavRail.Visibility = Visibility.Collapsed; + MenuToggleButton.Visibility = Visibility.Collapsed; + } + + } + - private void MenuDarkModeButton_Click(object sender, RoutedEventArgs e) + private void MenuDarkModeButton_Click(object sender, RoutedEventArgs e) => ModifyTheme(DarkModeToggleButton.IsChecked == true); private static void ModifyTheme(bool isDarkTheme) @@ -97,5 +110,55 @@ private static void ModifyTheme(bool isDarkTheme) private void OnSelectedItemChanged(object sender, DependencyPropertyChangedEventArgs e) => MainScrollViewer.ScrollToHome(); + + private void GitHubButton_OnClick(object sender, RoutedEventArgs e) + => Link.OpenInBrowser(ConfigurationManager.AppSettings["GitHub"]); + + private void Window_SizeChanged(object sender, SizeChangedEventArgs e) + { + if (ActualWidth <= 700) + { + NavRail.Visibility = Visibility.Collapsed; + NavBar.Visibility = Visibility.Visible; + NavDrawer.OpenMode = DrawerHostOpenMode.Modal; + NavDrawer.IsLeftDrawerOpen = false; + MenuToggleButton.Visibility = Visibility.Visible; + FAB.Visibility = Visibility.Visible; + DrawerFAB.Visibility = Visibility.Collapsed; + } + else if (ActualWidth > 700 && ActualWidth <= 1600) + { + NavRail.Visibility = Visibility.Visible; + NavBar.Visibility = Visibility.Collapsed; + NavDrawer.OpenMode = DrawerHostOpenMode.Modal; + NavDrawer.IsLeftDrawerOpen = false; + MenuToggleButton.Visibility = Visibility.Visible; + FAB.Visibility = Visibility.Collapsed; + DrawerFAB.Visibility = Visibility.Collapsed; + } + else if (ActualWidth > 1600) + { + NavRail.Visibility = Visibility.Collapsed; + NavBar.Visibility = Visibility.Collapsed; + NavDrawer.OpenMode = DrawerHostOpenMode.Standard; + NavDrawer.IsLeftDrawerOpen = true; + MenuToggleButton.Visibility = Visibility.Collapsed; + FAB.Visibility = Visibility.Collapsed; + DrawerFAB.Visibility = Visibility.Visible; + } + } + + private void MenuOpen_Click(object sender, RoutedEventArgs e) + { + NavDrawer.IsLeftDrawerOpen = false; + if (ActualWidth > 1600) + { + NavRail.Visibility = Visibility.Visible; + MenuToggleButton.Visibility = Visibility.Visible; + } + + } + + private void CloseNotificationPanel_Click(object sender, RoutedEventArgs e) => NotificationPanel.Visibility = Visibility.Collapsed; } } diff --git a/MaterialDesign3.Demo.Wpf/NavigationBar.xaml b/MaterialDesign3.Demo.Wpf/NavigationBar.xaml new file mode 100644 index 0000000000..7f63a0aaa1 --- /dev/null +++ b/MaterialDesign3.Demo.Wpf/NavigationBar.xaml @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MaterialDesign3.Demo.Wpf/NavigationBar.xaml.cs b/MaterialDesign3.Demo.Wpf/NavigationBar.xaml.cs new file mode 100644 index 0000000000..68b74944b1 --- /dev/null +++ b/MaterialDesign3.Demo.Wpf/NavigationBar.xaml.cs @@ -0,0 +1,72 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using MaterialDesign3Demo.Domain; +using MaterialDesignThemes.Wpf; + +namespace MaterialDesign3Demo +{ + /// + /// Interaction logic for NavigationBar.xaml + /// + public partial class NavigationBar : UserControl + { + public List SampleList { get; set; } + public NavigationBar() + { + InitializeComponent(); + DataContext = this; + + SampleList = new() + { + new SampleItem + { + Title = "Payment", + SelectedIcon = PackIconKind.CreditCard, + UnselectedIcon = PackIconKind.CreditCardOutline, + }, + new SampleItem + { + Title = "Home", + SelectedIcon = PackIconKind.Home, + UnselectedIcon = PackIconKind.HomeOutline, + }, + new SampleItem + { + Title = "Special", + SelectedIcon = PackIconKind.Star, + UnselectedIcon = PackIconKind.StarOutline, + }, + new SampleItem + { + Title = "Shared", + SelectedIcon = PackIconKind.Users, + UnselectedIcon = PackIconKind.UsersOutline, + }, + new SampleItem + { + Title = "Files", + SelectedIcon = PackIconKind.Folder, + UnselectedIcon = PackIconKind.FolderOutline, + }, + new SampleItem + { + Title = "Library", + SelectedIcon = PackIconKind.Bookshelf, + UnselectedIcon = PackIconKind.Bookshelf, + }, + }; + } + } +} diff --git a/MaterialDesign3.Demo.Wpf/NavigationRail.xaml b/MaterialDesign3.Demo.Wpf/NavigationRail.xaml index d0c121bd7f..0da9910b49 100644 --- a/MaterialDesign3.Demo.Wpf/NavigationRail.xaml +++ b/MaterialDesign3.Demo.Wpf/NavigationRail.xaml @@ -6,602 +6,342 @@ xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:smtx="clr-namespace:ShowMeTheXAML;assembly=ShowMeTheXAML" xmlns:materialDesign="http://materialdesigninxaml.net/winfx/xaml/themes" + xmlns:local="clr-namespace:MaterialDesign3Demo" + xmlns:domain="clr-namespace:MaterialDesign3Demo.Domain" mc:Ignorable="d" d:DesignHeight="450" d:DesignWidth="800"> - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... - - - + + + + + + + + + - - - - - - - - - - - - - Praesent sed dui arcu. Vivamus porta auctor sagittis - - - + - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit... - - - + + + - - - - - - - - - - - - - Praesent sed dui arcu. Vivamus porta auctor sagittis - - - + + + + + + + + - - - - - - - - - - - - - + - - - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - + - - - - - - - - + + + + + + + + + - - - - - - - - + - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + + - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + - - - - - - - - - - - - + + - - - - - - - - + + + + + + + + + - - - - - - - - + - - - - - - - - - + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - + + + + + + - - - - - - - - + - - - - - - - - - + + + + + + + + + + + + + - - - + + + + diff --git a/MaterialDesign3.Demo.Wpf/NavigationRail.xaml.cs b/MaterialDesign3.Demo.Wpf/NavigationRail.xaml.cs index 13501eafb4..bfe3caa01d 100644 --- a/MaterialDesign3.Demo.Wpf/NavigationRail.xaml.cs +++ b/MaterialDesign3.Demo.Wpf/NavigationRail.xaml.cs @@ -1,7 +1,64 @@ -namespace MaterialDesign3Demo +using System.Collections.Generic; +using MaterialDesign3Demo.Domain; +using MaterialDesignThemes.Wpf; + +namespace MaterialDesign3Demo; + +public partial class NavigationRail { - public partial class NavigationRail + + public List SampleList { get; set; } + + public NavigationRail() { - public NavigationRail() => InitializeComponent(); + InitializeComponent(); + DataContext = this; + + SampleList = new() + { + new SampleItem + { + Title = "Payment", + SelectedIcon = PackIconKind.CreditCard, + UnselectedIcon = PackIconKind.CreditCardOutline, + Notification = 1 + }, + new SampleItem + { + Title = "Home", + SelectedIcon = PackIconKind.Home, + UnselectedIcon = PackIconKind.HomeOutline, + }, + new SampleItem + { + Title = "Special", + SelectedIcon = PackIconKind.Star, + UnselectedIcon = PackIconKind.StarOutline, + }, + new SampleItem + { + Title = "Shared", + SelectedIcon = PackIconKind.Users, + UnselectedIcon = PackIconKind.UsersOutline, + }, + new SampleItem + { + Title = "Files", + SelectedIcon = PackIconKind.Folder, + UnselectedIcon = PackIconKind.FolderOutline, + }, + new SampleItem + { + Title = "Library", + SelectedIcon = PackIconKind.Bookshelf, + UnselectedIcon = PackIconKind.Bookshelf, + }, + }; } + + private void Button_Click(object sender, System.Windows.RoutedEventArgs e) + => SampleList[0].Notification = SampleList[0].Notification is null ? 1 : null; + + private void Button_Click_1(object sender, System.Windows.RoutedEventArgs e) + => SampleList[0].Notification = SampleList[0].Notification is null ? "123+" : null; } diff --git a/MaterialDesignThemes.Wpf/BadgedAssist.cs b/MaterialDesignThemes.Wpf/BadgedAssist.cs new file mode 100644 index 0000000000..a95f19fc3c --- /dev/null +++ b/MaterialDesignThemes.Wpf/BadgedAssist.cs @@ -0,0 +1,63 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Media; + +namespace MaterialDesignThemes.Wpf +{ + public static class BadgedAssist + { + #region Badge + public static object? GetBadge(DependencyObject element) + => (object)element.GetValue(BadgeProperty); + public static void SetBadge(DependencyObject element, object? value) + => element.SetValue(BadgeProperty, value); + + public static readonly DependencyProperty BadgeProperty = + DependencyProperty.RegisterAttached("Badge", typeof(object), typeof(BadgedAssist), new PropertyMetadata(default(object))); + #endregion + + #region BadgeBackground + public static Brush? GetBadgeBackground(DependencyObject element) + => (Brush)element.GetValue(BadgeBackgroundProperty); + public static void SetBadgeBackground(DependencyObject element, Brush? value) + => element.SetValue(BadgeBackgroundProperty, value); + + public static readonly DependencyProperty BadgeBackgroundProperty = + DependencyProperty.RegisterAttached("BadgeBackground", typeof(Brush), typeof(BadgedAssist), new PropertyMetadata(default(Brush))); + #endregion + + #region BadgeForeground + public static Brush? GetBadgeForeground(DependencyObject element) + => (Brush)element.GetValue(BadgeForegroundProperty); + public static void SetBadgeForeground(DependencyObject element, Brush? value) + => element.SetValue(BadgeForegroundProperty, value); + + public static readonly DependencyProperty BadgeForegroundProperty = + DependencyProperty.RegisterAttached("BadgeForeground", typeof(Brush), typeof(BadgedAssist), new PropertyMetadata(default(Brush))); + #endregion + + #region BadgePlacementMode + public static BadgePlacementMode GetBadgePlacementMode(DependencyObject element) + => (BadgePlacementMode)element.GetValue(BadgePlacementModeProperty); + public static void SetBadgePlacementMode(DependencyObject element, BadgePlacementMode value) + => element.SetValue(BadgePlacementModeProperty, value); + + public static readonly DependencyProperty BadgePlacementModeProperty = + DependencyProperty.RegisterAttached("BadgePlacementMode", typeof(BadgePlacementMode), typeof(BadgedAssist), new PropertyMetadata(default(BadgePlacementMode))); + #endregion + + #region IsMiniBadge + public static bool GetIsMiniBadge(DependencyObject element) + => (bool)element.GetValue(IsMiniBadgeProperty); + public static void SetIsMiniBadge(DependencyObject element, bool value) + => element.SetValue(IsMiniBadgeProperty, value); + + public static readonly DependencyProperty IsMiniBadgeProperty = + DependencyProperty.RegisterAttached("IsMiniBadge", typeof(bool), typeof(BadgedAssist), new PropertyMetadata(default(bool))); + #endregion + } +} diff --git a/MaterialDesignThemes.Wpf/ListBoxItemAssist.cs b/MaterialDesignThemes.Wpf/ListBoxItemAssist.cs index bc44d5708d..13be08c9a8 100644 --- a/MaterialDesignThemes.Wpf/ListBoxItemAssist.cs +++ b/MaterialDesignThemes.Wpf/ListBoxItemAssist.cs @@ -1,4 +1,5 @@ -using System.Windows; +using System.Drawing; +using System.Windows; namespace MaterialDesignThemes.Wpf { @@ -14,7 +15,8 @@ public static class ListBoxItemAssist public static readonly DependencyProperty CornerRadiusProperty = DependencyProperty.RegisterAttached("CornerRadius", typeof(CornerRadius), typeof(ListBoxItemAssist), new PropertyMetadata(DefaultCornerRadius)); - public static CornerRadius GetCornerRadius(DependencyObject element) => (CornerRadius)element.GetValue(CornerRadiusProperty); + public static CornerRadius GetCornerRadius(DependencyObject element) + => (CornerRadius)element.GetValue(CornerRadiusProperty); public static void SetCornerRadius(DependencyObject element, CornerRadius value) => element.SetValue(CornerRadiusProperty, value); #endregion diff --git a/MaterialDesignThemes.Wpf/MaterialDesignThemes.Wpf.csproj b/MaterialDesignThemes.Wpf/MaterialDesignThemes.Wpf.csproj index a02ceea56d..44866462e7 100644 --- a/MaterialDesignThemes.Wpf/MaterialDesignThemes.Wpf.csproj +++ b/MaterialDesignThemes.Wpf/MaterialDesignThemes.Wpf.csproj @@ -27,4 +27,17 @@ + + + $(DefaultXamlRuntime) + Designer + + + $(DefaultXamlRuntime) + Designer + + + $(DefaultXamlRuntime) + + \ No newline at end of file diff --git a/MaterialDesignThemes.Wpf/NavigationBarAssist.cs b/MaterialDesignThemes.Wpf/NavigationBarAssist.cs new file mode 100644 index 0000000000..82ba87be70 --- /dev/null +++ b/MaterialDesignThemes.Wpf/NavigationBarAssist.cs @@ -0,0 +1,106 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; + +namespace MaterialDesignThemes.Wpf +{ + public static class NavigationBarAssist + { + private static readonly CornerRadius DefaultCornerRadius = new CornerRadius(2.0); + + #region CornerRadius + /// + /// Controls the corner radius of the selection box. + /// + public static readonly DependencyProperty CornerRadiusProperty + = DependencyProperty.RegisterAttached("CornerRadius", typeof(CornerRadius), typeof(NavigationBarAssist), new PropertyMetadata(DefaultCornerRadius)); + + public static CornerRadius GetCornerRadius(DependencyObject element) + => (CornerRadius)element.GetValue(CornerRadiusProperty); + public static void SetCornerRadius(DependencyObject element, CornerRadius value) => element.SetValue(CornerRadiusProperty, value); + #endregion + + #region Property ShowSelectionBackground + + public static readonly DependencyProperty ShowSelectionBackgroundProperty = DependencyProperty.RegisterAttached( + "ShowSelectionBackground", typeof(bool), typeof(NavigationBarAssist), new PropertyMetadata(false)); + + public static object GetShowSelectionBackground(DependencyObject element) => (bool)element.GetValue(ShowSelectionBackgroundProperty); + public static void SetShowSelectionBackground(DependencyObject element, bool value) => element.SetValue(ShowSelectionBackgroundProperty, value); + + #endregion + + #region Property SelectionCornerRadius + + public static readonly DependencyProperty SelectionCornerRadiusProperty = DependencyProperty.RegisterAttached( + "SelectionCornerRadius", typeof(CornerRadius), typeof(NavigationBarAssist), new PropertyMetadata(default(CornerRadius))); + + public static object GetSelectionCornerRadius(DependencyObject element) => (CornerRadius)element.GetValue(SelectionCornerRadiusProperty); + public static void SetSelectionCornerRadius(DependencyObject element, CornerRadius value) => element.SetValue(SelectionCornerRadiusProperty, value); + + #endregion + + #region SelectionHeight + public static int GetSelectionHeight(DependencyObject element) + => (int)element.GetValue(SelectionHeightProperty); + public static void SetSelectionHeight(DependencyObject element, int value) + => element.SetValue(SelectionHeightProperty, value); + + public static readonly DependencyProperty SelectionHeightProperty = + DependencyProperty.RegisterAttached("SelectionHeight", typeof(int), typeof(NavigationBarAssist), new PropertyMetadata(default(int))); + #endregion + + #region SelectionWidth + public static int GetSelectionWidth(DependencyObject element) + => (int)element.GetValue(SelectionWidthProperty); + public static void SetSelectionWidth(DependencyObject element, int value) + => element.SetValue(SelectionWidthProperty, value); + + public static readonly DependencyProperty SelectionWidthProperty = + DependencyProperty.RegisterAttached("SelectionWidth", typeof(int), typeof(NavigationBarAssist), new PropertyMetadata(default(int))); + #endregion + + #region UnselectedIcon + public static PackIconKind GetUnselectedIcon(DependencyObject element) + => (PackIconKind)element.GetValue(UnselectedIconProperty); + public static void SetUnselectedIcon(DependencyObject element, PackIconKind value) + => element.SetValue(UnselectedIconProperty, value); + + public static readonly DependencyProperty UnselectedIconProperty = + DependencyProperty.RegisterAttached("UnselectedIcon", typeof(PackIconKind), typeof(NavigationBarAssist), new PropertyMetadata(PackIconKind.None)); + #endregion + + #region SelectedIcon + public static PackIconKind GetSelectedIcon(DependencyObject element) + => (PackIconKind)element.GetValue(SelectedIconProperty); + public static void SetSelectedIcon(DependencyObject element, PackIconKind value) + => element.SetValue(SelectedIconProperty, value); + + public static readonly DependencyProperty SelectedIconProperty = + DependencyProperty.RegisterAttached("SelectedIcon", typeof(PackIconKind), typeof(NavigationBarAssist), new PropertyMetadata(PackIconKind.None)); + #endregion + + #region IconSize + public static int GetIconSize(DependencyObject element) + => (int)element.GetValue(IconSizeProperty); + public static void SetIconSize(DependencyObject element, int value) + => element.SetValue(IconSizeProperty, value); + + public static readonly DependencyProperty IconSizeProperty = + DependencyProperty.RegisterAttached("IconSize", typeof(int), typeof(NavigationBarAssist), new PropertyMetadata(24)); + #endregion + + #region IsTextVisible + public static bool GetIsTextVisible(DependencyObject element) + => (bool)element.GetValue(IsTextVisibleProperty); + public static void SetIsTextVisible(DependencyObject element, bool value) + => element.SetValue(IsTextVisibleProperty, value); + + public static readonly DependencyProperty IsTextVisibleProperty = + DependencyProperty.RegisterAttached("IsTextVisible", typeof(bool), typeof(NavigationBarAssist), new PropertyMetadata(true)); + #endregion + } +} \ No newline at end of file diff --git a/MaterialDesignThemes.Wpf/NavigationDrawerAssist.cs b/MaterialDesignThemes.Wpf/NavigationDrawerAssist.cs new file mode 100644 index 0000000000..fa5c1ad473 --- /dev/null +++ b/MaterialDesignThemes.Wpf/NavigationDrawerAssist.cs @@ -0,0 +1,56 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; + +namespace MaterialDesignThemes.Wpf +{ + public static class NavigationDrawerAssist + { + private static readonly CornerRadius DefaultCornerRadius = new CornerRadius(2.0); + + #region CornerRadius + /// + /// Controls the corner radius of the selection box. + /// + public static readonly DependencyProperty CornerRadiusProperty + = DependencyProperty.RegisterAttached("CornerRadius", typeof(CornerRadius), typeof(NavigationDrawerAssist), new PropertyMetadata(DefaultCornerRadius)); + + public static CornerRadius GetCornerRadius(DependencyObject element) + => (CornerRadius)element.GetValue(CornerRadiusProperty); + public static void SetCornerRadius(DependencyObject element, CornerRadius value) => element.SetValue(CornerRadiusProperty, value); + #endregion + + #region UnselectedIcon + public static PackIconKind GetUnselectedIcon(DependencyObject element) + => (PackIconKind)element.GetValue(UnselectedIconProperty); + public static void SetUnselectedIcon(DependencyObject element, PackIconKind value) + => element.SetValue(UnselectedIconProperty, value); + + public static readonly DependencyProperty UnselectedIconProperty = + DependencyProperty.RegisterAttached("UnselectedIcon", typeof(PackIconKind), typeof(NavigationDrawerAssist), new PropertyMetadata(PackIconKind.None)); + #endregion + + #region SelectedIcon + public static PackIconKind GetSelectedIcon(DependencyObject element) + => (PackIconKind)element.GetValue(SelectedIconProperty); + public static void SetSelectedIcon(DependencyObject element, PackIconKind value) + => element.SetValue(SelectedIconProperty, value); + + public static readonly DependencyProperty SelectedIconProperty = + DependencyProperty.RegisterAttached("SelectedIcon", typeof(PackIconKind), typeof(NavigationDrawerAssist), new PropertyMetadata(PackIconKind.None)); + #endregion + + #region IconSize + public static int GetIconSize(DependencyObject element) + => (int)element.GetValue(IconSizeProperty); + public static void SetIconSize(DependencyObject element, int value) + => element.SetValue(IconSizeProperty, value); + + public static readonly DependencyProperty IconSizeProperty = + DependencyProperty.RegisterAttached("IconSize", typeof(int), typeof(NavigationDrawerAssist), new PropertyMetadata(24)); + #endregion + } +} diff --git a/MaterialDesignThemes.Wpf/NavigationRailAssist.cs b/MaterialDesignThemes.Wpf/NavigationRailAssist.cs index 3594a83f74..dd04e41365 100644 --- a/MaterialDesignThemes.Wpf/NavigationRailAssist.cs +++ b/MaterialDesignThemes.Wpf/NavigationRailAssist.cs @@ -1,10 +1,23 @@ using System.Windows; -using System.Windows.Controls; namespace MaterialDesignThemes.Wpf { public static class NavigationRailAssist { + private static readonly CornerRadius DefaultCornerRadius = new CornerRadius(2.0); + + #region CornerRadius + /// + /// Controls the corner radius of the selection box. + /// + public static readonly DependencyProperty CornerRadiusProperty + = DependencyProperty.RegisterAttached("CornerRadius", typeof(CornerRadius), typeof(NavigationRailAssist), new PropertyMetadata(DefaultCornerRadius)); + + public static CornerRadius GetCornerRadius(DependencyObject element) + => (CornerRadius)element.GetValue(CornerRadiusProperty); + public static void SetCornerRadius(DependencyObject element, CornerRadius value) => element.SetValue(CornerRadiusProperty, value); + #endregion + #region Property FloatingContent /// @@ -37,5 +50,65 @@ public static class NavigationRailAssist public static void SetSelectionCornerRadius(DependencyObject element, CornerRadius value) => element.SetValue(SelectionCornerRadiusProperty, value); #endregion + + #region SelectionHeight + public static int GetSelectionHeight(DependencyObject element) + => (int)element.GetValue(SelectionHeightProperty); + public static void SetSelectionHeight(DependencyObject element, int value) + => element.SetValue(SelectionHeightProperty, value); + + public static readonly DependencyProperty SelectionHeightProperty = + DependencyProperty.RegisterAttached("SelectionHeight", typeof(int), typeof(NavigationRailAssist), new PropertyMetadata(default(int))); + #endregion + + #region SelectionWidth + public static int GetSelectionWidth(DependencyObject element) + => (int)element.GetValue(SelectionWidthProperty); + public static void SetSelectionWidth(DependencyObject element, int value) + => element.SetValue(SelectionWidthProperty, value); + + public static readonly DependencyProperty SelectionWidthProperty = + DependencyProperty.RegisterAttached("SelectionWidth", typeof(int), typeof(NavigationRailAssist), new PropertyMetadata(default(int))); + #endregion + + #region UnselectedIcon + public static PackIconKind GetUnselectedIcon(DependencyObject element) + => (PackIconKind)element.GetValue(UnselectedIconProperty); + public static void SetUnselectedIcon(DependencyObject element, PackIconKind value) + => element.SetValue(UnselectedIconProperty, value); + + public static readonly DependencyProperty UnselectedIconProperty = + DependencyProperty.RegisterAttached("UnselectedIcon", typeof(PackIconKind), typeof(NavigationRailAssist), new PropertyMetadata(PackIconKind.None)); + #endregion + + #region SelectedIcon + public static PackIconKind GetSelectedIcon(DependencyObject element) + => (PackIconKind)element.GetValue(SelectedIconProperty); + public static void SetSelectedIcon(DependencyObject element, PackIconKind value) + => element.SetValue(SelectedIconProperty, value); + + public static readonly DependencyProperty SelectedIconProperty = + DependencyProperty.RegisterAttached("SelectedIcon", typeof(PackIconKind), typeof(NavigationRailAssist), new PropertyMetadata(PackIconKind.None)); + #endregion + + #region IconSize + public static int GetIconSize(DependencyObject element) + => (int)element.GetValue(IconSizeProperty); + public static void SetIconSize(DependencyObject element, int value) + => element.SetValue(IconSizeProperty, value); + + public static readonly DependencyProperty IconSizeProperty = + DependencyProperty.RegisterAttached("IconSize", typeof(int), typeof(NavigationRailAssist), new PropertyMetadata(24)); + #endregion + + #region IsTextVisible + public static bool GetIsTextVisible(DependencyObject element) + => (bool)element.GetValue(IsTextVisibleProperty); + public static void SetIsTextVisible(DependencyObject element, bool value) + => element.SetValue(IsTextVisibleProperty, value); + + public static readonly DependencyProperty IsTextVisibleProperty = + DependencyProperty.RegisterAttached("IsTextVisible", typeof(bool), typeof(NavigationRailAssist), new PropertyMetadata(true)); + #endregion } } \ No newline at end of file diff --git a/MaterialDesignThemes.Wpf/Themes/Generic.xaml b/MaterialDesignThemes.Wpf/Themes/Generic.xaml index 179848f37d..c068c1e004 100644 --- a/MaterialDesignThemes.Wpf/Themes/Generic.xaml +++ b/MaterialDesignThemes.Wpf/Themes/Generic.xaml @@ -32,6 +32,7 @@ + - + + + - + + + - + + + + @@ -50,7 +51,7 @@ - + + + + + + + + + \ No newline at end of file diff --git a/MaterialDesignThemes.Wpf/Themes/MaterialDesign3.NavigationDrawer.xaml b/MaterialDesignThemes.Wpf/Themes/MaterialDesign3.NavigationDrawer.xaml new file mode 100644 index 0000000000..e920ad34c4 --- /dev/null +++ b/MaterialDesignThemes.Wpf/Themes/MaterialDesign3.NavigationDrawer.xaml @@ -0,0 +1,137 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/MaterialDesignThemes.Wpf/Themes/MaterialDesign3.NavigationRail.xaml b/MaterialDesignThemes.Wpf/Themes/MaterialDesign3.NavigationRail.xaml new file mode 100644 index 0000000000..eb2bd6e906 --- /dev/null +++ b/MaterialDesignThemes.Wpf/Themes/MaterialDesign3.NavigationRail.xaml @@ -0,0 +1,173 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.Badged.xaml b/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.Badged.xaml index 1a9aebdce6..c1d51b2815 100644 --- a/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.Badged.xaml +++ b/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.Badged.xaml @@ -15,7 +15,7 @@ - + + \ No newline at end of file diff --git a/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ListBox.xaml b/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ListBox.xaml index 13c5837636..f2e9e48bce 100644 --- a/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ListBox.xaml +++ b/MaterialDesignThemes.Wpf/Themes/MaterialDesignTheme.ListBox.xaml @@ -26,6 +26,8 @@ + + + + + + + + + + + + + + + + + + - - - - @@ -523,6 +540,10 @@ + + + + + + + +