Created
August 31, 2015 11:06
-
-
Save ButchersBoy/52483a41136013de8696 to your computer and use it in GitHub Desktop.
Palette Helper in Code-behind
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| <Window x:Class="MaterialDesignColors.WpfExample.PaletteSelectorWindow" | |
| xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" | |
| 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:MaterialDesignColors.WpfExample" | |
| xmlns:wpf="clr-namespace:MaterialDesignThemes.Wpf;assembly=MaterialDesignThemes.Wpf" | |
| xmlns:materialDesignColors="clr-namespace:MaterialDesignColors;assembly=MaterialDesignColors" | |
| mc:Ignorable="d" | |
| Title="PaletteSelectorWindow" Height="300" Width="300" | |
| TextElement.Foreground="{DynamicResource MaterialDesignBody}" | |
| Background="{DynamicResource MaterialDesignPaper}" | |
| FontFamily="pack://application:,,,/MaterialDesignThemes.Wpf;component/Resources/Roboto/#Roboto" | |
| d:DataContext="{d:DesignInstance local:PaletteSelectorViewModel, IsDesignTimeCreatable=False}"> | |
| <Window.Resources> | |
| <BooleanToVisibilityConverter x:Key="BooleanToVisibilityConverter" /> | |
| <Style TargetType="Button" BasedOn="{StaticResource MaterialDesignFlatButton}"> | |
| <Setter Property="Margin" Value="0" /> | |
| <Setter Property="CommandParameter" Value="{Binding}" /> | |
| <Setter Property="VerticalAlignment" Value="Stretch" /> | |
| <Setter Property="HorizontalAlignment" Value="Stretch" /> | |
| <Setter Property="Foreground"> | |
| <Setter.Value> | |
| <SolidColorBrush Color="{Binding ExemplarHue.Foreground, Mode=OneTime}" /> | |
| </Setter.Value> | |
| </Setter> | |
| </Style> | |
| <Style x:Key="PalettePath" TargetType="Path"> | |
| <Setter Property="Data" Value="M17.5,12A1.5,1.5 0 0,1 16,10.5A1.5,1.5 0 0,1 17.5,9A1.5,1.5 0 0,1 19,10.5A1.5,1.5 0 0,1 17.5,12M14.5,8A1.5,1.5 0 0,1 13,6.5A1.5,1.5 0 0,1 14.5,5A1.5,1.5 0 0,1 16,6.5A1.5,1.5 0 0,1 14.5,8M9.5,8A1.5,1.5 0 0,1 8,6.5A1.5,1.5 0 0,1 9.5,5A1.5,1.5 0 0,1 11,6.5A1.5,1.5 0 0,1 9.5,8M6.5,12A1.5,1.5 0 0,1 5,10.5A1.5,1.5 0 0,1 6.5,9A1.5,1.5 0 0,1 8,10.5A1.5,1.5 0 0,1 6.5,12M12,3A9,9 0 0,0 3,12A9,9 0 0,0 12,21A1.5,1.5 0 0,0 13.5,19.5C13.5,19.11 13.35,18.76 13.11,18.5C12.88,18.23 12.73,17.88 12.73,17.5A1.5,1.5 0 0,1 14.23,16H16A5,5 0 0,0 21,11C21,6.58 16.97,3 12,3Z" /> | |
| <Setter Property="Fill"> | |
| <Setter.Value> | |
| <SolidColorBrush Color="{Binding ExemplarHue.Foreground, Mode=OneTime}" /> | |
| </Setter.Value> | |
| </Setter> | |
| </Style> | |
| <DataTemplate DataType="{x:Type materialDesignColors:Swatch}"> | |
| <wpf:Card Margin="4" Width="240"> | |
| <Grid> | |
| <Grid.RowDefinitions> | |
| <RowDefinition Height="Auto" /> | |
| <RowDefinition Height="Auto" /> | |
| </Grid.RowDefinitions> | |
| <Grid.ColumnDefinitions> | |
| <ColumnDefinition Width="*" /> | |
| <ColumnDefinition Width="Auto" /> | |
| </Grid.ColumnDefinitions> | |
| <TextBlock Text="{Binding Name}" Margin="8" Grid.ColumnSpan="2" /> | |
| <Border Grid.Row="1" Grid.Column="0" MinWidth="120"> | |
| <Border.Background> | |
| <SolidColorBrush Color="{Binding ExemplarHue.Color, Mode=OneTime}" /> | |
| </Border.Background> | |
| <Button Click="ButtonBase_OnClick" CommandParameter="{Binding}"> | |
| <StackPanel Orientation="Horizontal"> | |
| <TextBlock Text="Primary" /> | |
| <Viewbox Width="16" Height="16"> | |
| <Canvas Width="24" Height="24"> | |
| <Path Style="{StaticResource PalettePath}" /> | |
| </Canvas> | |
| </Viewbox> | |
| </StackPanel> | |
| </Button> | |
| </Border> | |
| <Border Grid.Row="1" Grid.Column="1" | |
| Visibility="{Binding IsAccented, Converter={StaticResource BooleanToVisibilityConverter}, Mode=OneTime}" | |
| Width="120"> | |
| <Border.Background> | |
| <SolidColorBrush Color="{Binding AccentExemplarHue.Color, Mode=OneTime}" /> | |
| </Border.Background> | |
| <Button Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type local:PaletteSelectorWindow}}, Path=DataContext.ApplyAccentCommand, Mode=OneTime}" | |
| CommandParameter="{Binding}"> | |
| <StackPanel Orientation="Horizontal"> | |
| <TextBlock Text="Accent" /> | |
| <Viewbox Width="16" Height="16"> | |
| <Canvas Width="24" Height="24"> | |
| <Path Style="{StaticResource PalettePath}" /> | |
| </Canvas> | |
| </Viewbox> | |
| </StackPanel> | |
| </Button> | |
| </Border> | |
| </Grid> | |
| </wpf:Card> | |
| </DataTemplate> | |
| </Window.Resources> | |
| <Grid> | |
| <Grid.RowDefinitions> | |
| <RowDefinition Height="Auto" /> | |
| <RowDefinition Height="*" /> | |
| </Grid.RowDefinitions> | |
| <StackPanel Orientation="Horizontal" Margin="8"> | |
| <TextBlock VerticalAlignment="Center">Light</TextBlock> | |
| <ToggleButton Margin="8 0 16 0" Command="{Binding ToggleBaseCommand}" CommandParameter="{Binding RelativeSource={RelativeSource Self}, Path=IsChecked}" /> | |
| <TextBlock VerticalAlignment="Center">Dark</TextBlock> | |
| </StackPanel> | |
| <ScrollViewer Grid.Row="1" VerticalScrollBarVisibility="Auto" HorizontalScrollBarVisibility="Disabled"> | |
| <ItemsControl Loaded="FrameworkElement_OnLoaded"> | |
| <ItemsControl.ItemsPanel> | |
| <ItemsPanelTemplate> | |
| <WrapPanel /> | |
| </ItemsPanelTemplate> | |
| </ItemsControl.ItemsPanel> | |
| </ItemsControl> | |
| </ScrollViewer> | |
| </Grid> | |
| </Window> |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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.Shapes; | |
| using MaterialDesignThemes.Wpf; | |
| namespace MaterialDesignColors.WpfExample | |
| { | |
| /// <summary> | |
| /// Interaction logic for PaletteSelectorWindow.xaml | |
| /// </summary> | |
| public partial class PaletteSelectorWindow : Window | |
| { | |
| public PaletteSelectorWindow() | |
| { | |
| InitializeComponent(); | |
| } | |
| private void FrameworkElement_OnLoaded(object sender, RoutedEventArgs e) | |
| { | |
| var target = ((ItemsControl) sender).Items; | |
| foreach (var swatch in new SwatchesProvider().Swatches) | |
| target.Add(swatch); | |
| } | |
| private void ButtonBase_OnClick(object sender, RoutedEventArgs e) | |
| { | |
| new PaletteHelper().ReplacePrimaryColor((Swatch)((Button)sender).CommandParameter); | |
| } | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment