예제 #1
0
        private Style GetExpanderStyle(IThemeColors colors)
        {
            if (HambergerMenu == null)
            {
                var hambergerTemplate = TemplateExtensions.Create <StackPanel>()
                                        .Contains(TemplateExtensions.Create <DockPanel>()
                                                  .Set(Control.BackgroundProperty, colors.Control.Normal)
                                                  .Contains(TemplateExtensions.Create <ToggleButton>()
                                                            .Set(ContentControl.ContentProperty, "☰")
                                                            .Set(FrameworkElement.MarginProperty, new Thickness(4))
                                                            .Set(Control.FontFamilyProperty, new FontFamily("Segoe UI Symbol"))
                                                            .Set(DockPanel.DockProperty, Dock.Left)
                                                            .Set(Control.FontSizeProperty, 18d)
                                                            .TemplateBinding(ToggleButton.IsCheckedProperty, Expander.IsExpandedProperty))
                                                  .Contains(TemplateExtensions.Create <ContentPresenter>()
                                                            .Set(FrameworkElement.MarginProperty, new Thickness(4))
                                                            .Set(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Center)
                                                            .Set(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Center)
                                                            .Set(ContentPresenter.ContentSourceProperty, "Header")))
                                        .Contains(TemplateExtensions.Create <ContentPresenter>()
                                                  .Set(ContentPresenter.ContentSourceProperty, "Content")
                                                  .TemplateBinding(UIElement.VisibilityProperty, Expander.IsExpandedProperty, new BooleanToVisibilityConverter()))
                                        .AsControlTemplate <Expander>();

                HambergerMenu = StyleExtensions.Create()
                                .Template(hambergerTemplate)
                                .AsStyle <Expander>();
            }
            return(null);
        }
예제 #2
0
        private Style GetCheckBoxStyle(IThemeColors colors)
        {
            var template = TemplateExtensions.Create <Border>()
                           .TemplateBinding(Control.BackgroundProperty, Control.BackgroundProperty)
                           .TemplateBinding(Control.BorderBrushProperty, Control.BorderThicknessProperty)
                           .TemplateBinding(Control.BorderThicknessProperty, Control.BorderThicknessProperty)
                           .Contains <StackPanel>()
                           .Set(StackPanel.OrientationProperty, Orientation.Horizontal)
                           .Contains(TemplateExtensions.Create <Ellipse>()
                                     .Size(8, 8)
                                     .TemplateBinding(Shape.FillProperty, Control.ForegroundProperty))
                           .Contains(TemplateExtensions.Create <ContentPresenter>()
                                     .Center())
                           .AsControlTemplate <CheckBox>();

            return(StyleExtensions.Create()
                   .Set(Control.ForegroundProperty, colors.Text.Normal)
                   .When(TriggerExtensions.Property(ToggleButton.IsCheckedProperty)
                         .Is(true)
                         .Then(Control.FontWeightProperty, FontWeights.Bold)
                         .Then(Control.ForegroundProperty, colors.Control.Selected))
                   .When(TriggerExtensions.Property(UIElement.IsMouseOverProperty)
                         .Is(true)
                         .Then(Control.BackgroundProperty, colors.Control.Over))
                   .When(TriggerExtensions.Property(FrameworkElement.TagProperty)
                         .Is("test")
                         .Then(ContentControl.ContentProperty, null))
                   .Template(template)
                   .AsStyle <CheckBox>());
        }
예제 #3
0
        private Style GetToggleButtonStyle(IThemeColors colors)
        {
            var template = TemplateExtensions.Create <Border>()
                           .TemplateBinding(Border.BackgroundProperty, ToggleButton.BackgroundProperty)
                           .Contains(TemplateExtensions.Create <ContentPresenter>())
                           .AsControlTemplate <ToggleButton>();

            return(StyleExtensions.Create()
                   .Set(Control.ForegroundProperty, colors.Text.Normal)
                   .Set(Control.BackgroundProperty, new SolidColorBrush(Colors.Transparent))
                   .When(TriggerExtensions.Property(UIElement.IsMouseOverProperty)
                         .Is(true)
                         .Then(Control.BackgroundProperty, colors.Control.Over))
                   .Template(template)
                   .AsStyle <ToggleButton>());
        }
예제 #4
0
        private Style GetContextMenuStyle(IThemeColors colors)
        {
            var template = TemplateExtensions.Create <Border>()
                           .TemplateBinding(Control.BackgroundProperty, Control.BackgroundProperty)
                           .TemplateBinding(Control.BorderBrushProperty, Control.BorderBrushProperty)
                           .TemplateBinding(Control.BorderThicknessProperty, Control.BorderThicknessProperty)
                           .Contains(TemplateExtensions.Create <StackPanel>()
                                     .Set(Panel.IsItemsHostProperty, true))
                           .AsControlTemplate <ContextMenu>();

            return(StyleExtensions.Create()
                   .Set(Control.ForegroundProperty, colors.Text.Normal)
                   .Set(Control.BackgroundProperty, colors.Control.Accent1)
                   .Set(Control.BorderBrushProperty, colors.Control.Accent1)
                   .Set(Control.BorderThicknessProperty, new Thickness(1))
                   .Template(template)
                   .AsStyle <ContextMenu>());
        }
예제 #5
0
        private Style GetMenuItemStyle(IThemeColors colors)
        {
            var template = TemplateExtensions.Create <Border>()
                           .TemplateBinding(Control.BackgroundProperty, MenuItem.BackgroundProperty)
                           .Contains(TemplateExtensions.Create <ContentPresenter>()
                                     .Set(Control.MarginProperty, new Thickness(8))
                                     .Set(ContentPresenter.ContentSourceProperty, "Header"))
                           .AsControlTemplate <MenuItem>();

            return(StyleExtensions.Create()
                   .Set(Control.ForegroundProperty, colors.Text.Normal)
                   .Set(Control.BackgroundProperty, colors.Control.Normal)
                   .When(TriggerExtensions
                         .Property(Control.IsMouseOverProperty)
                         .Is(true)
                         .Then(Control.BackgroundProperty, colors.Control.Over))
                   .Template(template)
                   .AsStyle <MenuItem>());
        }
예제 #6
0
        private Style GetDropDownButtonStyle(IThemeColors colors)
        {
            var template = TemplateExtensions.Create <Border>()
                           .TemplateBinding(Control.BackgroundProperty, Control.BackgroundProperty)
                           .TemplateBinding(Border.PaddingProperty, Button.PaddingProperty)
                           .Contains(TemplateExtensions.Create <ContentPresenter>()
                                     .Set(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Center)
                                     .Set(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Center)
                                     .TemplateBinding(ContentPresenter.ContentProperty, ContentControl.ContentProperty))
                           .AsControlTemplate <DropDownButton>();

            return(StyleExtensions.Create()
                   .Set(Control.BackgroundProperty, new SolidColorBrush(Colors.Transparent))
                   .Set(Control.PaddingProperty, new Thickness(8, 4, 8, 4))
                   .When(TriggerExtensions.Property(UIElement.IsMouseOverProperty)
                         .Is(true)
                         .Then(Control.BackgroundProperty, colors.Control.Accent1))
                   .Template(template)
                   .AsStyle <DropDownButton>());
        }
        private Style GetHeaderContentControlStyle(IThemeColors colors)
        {
            var template = TemplateExtensions.Create <DockPanel>()
                           .Contains(TemplateExtensions.Create <Border>()
                                     //.Set(Border.CornerRadiusProperty, new CornerRadius(3, 3, 0, 0))
                                     .Set(Control.BackgroundProperty, colors.Control.Accent1)
                                     //.Set(Border.BorderBrushProperty, colors.Outline.Normal)
                                     //.Set(Border.BorderThicknessProperty, new Thickness(1,1,1,0))
                                     .Set(DockPanel.DockProperty, Dock.Top)
                                     .Contains(TemplateExtensions.Create <ContentPresenter>()
                                               .Set(ContentPresenter.ContentSourceProperty, "Header")
                                               .Set(FrameworkElement.MarginProperty, new Thickness(4))))
                           .Contains(TemplateExtensions.Create <Border>()
                                     .Set(Control.BackgroundProperty, colors.Control.Accent2)
                                     .Set(Border.BorderBrushProperty, colors.Outline.Normal)
                                     .Set(Border.BorderThicknessProperty, new Thickness(1, 1, 1, 1))
                                     .Contains(TemplateExtensions.Create <ContentPresenter>()))
                           .AsControlTemplate <HeaderedContentControl>();

            return(StyleExtensions.Create()
                   .Template(template)
                   .AsStyle <HeaderedContentControl>());
        }
예제 #8
0
        private Style GetListBoxItemStyle(IThemeColors colors)
        {
            var template = TemplateExtensions.Create <Border>()
                           .Set(FrameworkElement.HorizontalAlignmentProperty, HorizontalAlignment.Stretch)
                           .Contains(TemplateExtensions.Create <ContentPresenter>())
                           .TemplateBinding(Border.BackgroundProperty, ListBoxItem.BackgroundProperty)
                           .AsControlTemplate <ListBoxItem>();

            return(StyleExtensions.Create()
                   .Template(template)
                   .Set(Control.PaddingProperty, new Thickness(0, 4, 0, 0))
                   .Set(Control.BackgroundProperty, colors.Control.Normal)
                   .Set(Control.BorderBrushProperty, colors.Control.Accent1)
                   .Set(Control.BorderThicknessProperty, new Thickness(0, 1, 0, 0))
                   .When(TriggerExtensions
                         .Property(ListBoxItem.IsMouseOverProperty)
                         .Is(true)
                         .Then(ListBoxItem.BackgroundProperty, colors.Control.Over))
                   .When(TriggerExtensions
                         .Property(ListBoxItem.IsSelectedProperty)
                         .Is(true)
                         .Then(ListBoxItem.BackgroundProperty, colors.Control.Selected))
                   .AsStyle <ListBoxItem>());
        }
예제 #9
0
        public SearchView()
        {
            var bmp = new BitmapImage(new Uri(@"pack://application:,,,/Resources/no-artist.png", UriKind.Absolute));

            var dataTemplate = TemplateExtensions.Create <DockPanel>()
                               .Contains(TemplateExtensions.Create <Image>()
                                         .Set(DockPanel.DockProperty, Dock.Left)
                                         .Set(Control.HeightProperty, 25d)
                                         .Set(Control.WidthProperty, 25d)
                                         .Bind(Image.SourceProperty, nameof(IArtist.PictureUri), null, bmp))
                               .Contains(TemplateExtensions.Create <TextBlock>()
                                         .Set(Control.MarginProperty, new Thickness(8, 0, 0, 0))
                                         .Set(Control.VerticalAlignmentProperty, VerticalAlignment.Center)
                                         .Set(Control.MaxWidthProperty, 250d)
                                         .Set(Control.HorizontalAlignmentProperty, HorizontalAlignment.Left)
                                         .Set(TextBlock.TextWrappingProperty, TextWrapping.WrapWithOverflow)
                                         .Bind(TextBlock.TextProperty, nameof(IArtist.Name)))
                               .AsDataTemplate <IArtist>();

            var navigationButtonStyle = StyleExtensions.Create()
                                        .BasedOn <Button>()
                                        .Set(Control.HorizontalAlignmentProperty, HorizontalAlignment.Left)
                                        .Set(FrameworkElement.MarginProperty, new Thickness(4))
                                        .Set(Control.FontSizeProperty, 18d)
                                        .Set(Control.FontFamilyProperty, new FontFamily("Segoe UI symbol"))
                                        .When(TriggerExtensions
                                              .Property(FrameworkElement.IsEnabledProperty)
                                              .Is(false)
                                              .Then(FrameworkElement.VisibilityProperty, Visibility.Hidden))
                                        .AsStyle <Button>();

            this.fluentItem = this.AsFluent <TabItem>()
                              .Bind(BindingExtensions
                                    .OneTime(FrameworkElement.DataContextProperty)
                                    .With(nameof(RootViewModel.Search)))
                              .Set(FrameworkElement.VisibilityProperty, Visibility.Collapsed)
                              .Contains(new Grid()
                                        .AsFluent()
                                        .Margin(0, 25, 0, 0)
                                        .Cell(GridCellExtensions.Create()
                                              .Contains(new Button()
                                                        .AsFluent()
                                                        .UseStyle(navigationButtonStyle)
                                                        .Contains("")
                                                        .SubDataContext(nameof(SearchViewModel.NavigationViewModel))
                                                        .Bind(BindingExtensions
                                                              .OneTime(ButtonBase.CommandProperty)
                                                              .With(nameof(SearchNavigationViewModel.GoBackCommand)))))
                                        .Cell(GridCellExtensions.Create()
                                              .Column(1).AutoWidth()
                                              .Contains(new TextBlock()
                                                        .AsFluent()
                                                        .Set(FrameworkElement.MarginProperty, new Thickness(4))
                                                        .Set(FrameworkElement.VerticalAlignmentProperty, VerticalAlignment.Center)
                                                        .Set(TextBlock.TextProperty, "Search")))
                                        .Cell(GridCellExtensions.Create()
                                              .Column(2).Width("*")
                                              .Contains(new TextBox()
                                                        .AsFluent()
                                                        .Bind(BindingExtensions
                                                              .TwoWay(TextBox.TextProperty)
                                                              .With(nameof(SearchViewModel.Search)))
                                                        .Set(FrameworkElement.MarginProperty, new Thickness(4))
                                                        .Set(TextBox.VerticalContentAlignmentProperty, VerticalAlignment.Center)
                                                        .On(TextBoxBase.KeyUpEvent, OnTextChanged)))
                                        .Cell(GridCellExtensions.Create()
                                              .Column(3).AutoWidth()
                                              .Contains(new DropDownButton()
                                                        .AsFluent()
                                                        .Contains("⋮")
                                                        .Set(Control.FontFamilyProperty, new FontFamily("Segoe UI symbol"))
                                                        .Set(Control.FontSizeProperty, 18d)
                                                        .Set(Control.ContextMenuProperty, SearchContextMenuBuilder.Create())))
                                        .Cell(GridCellExtensions.Create()
                                              .Row(1).Span(1, 4).Height("*")
                                              .Contains(new ListBox()
                                                        .AsFluent()
                                                        .Set(ListBox.MarginProperty, new Thickness(4))
                                                        .Set(ListBox.ItemTemplateProperty, dataTemplate)
                                                        .Bind(BindingExtensions
                                                              .OneWay(ListBox.ItemsSourceProperty)
                                                              .With(nameof(SearchViewModel.Artists)))
                                                        ))
                                        );
        }