对于一个项目,我正在使用Xceed WPF Toolkit颜色选择器让用户选择一种颜色。此颜色选择器用于不同的页面,并带有我们自己的自定义颜色。因此,我想在Application.xaml
中创建一个全局样式,然后在不同页面上使用颜色选择器,但是我找不到如何使用StandardColors
其他数组创建全局样式的正确工作示例用代码创建代码,然后将代码复制/粘贴到不同的页面上。
希望有人可以帮助我解决这个问题。
我现在开始工作的方式是:
每个页面/用户控件上的Xaml:
<xctk:ColorPicker
Name="ClrPcker_Background"
Grid.Row="4"
Grid.Column="1"
Width="300"
Margin="3"
HorizontalAlignment="Left"
SelectedColor="{Binding BackgroundColor, Mode=TwoWay, Converter={StaticResource BrushToColor}, UpdateSourceTrigger=PropertyChanged}"
SelectedColorChanged="ClrPcker_Background_SelectedColorChanged"
ShowRecentColors="True" />
每个页面/用户控件后面的代码:
CustomColorList.Add(New Xceed.Wpf.Toolkit.ColorItem(Color.FromRgb(32, 32, 32), "DarkBackground"))
CustomColorList.Add(New Xceed.Wpf.Toolkit.ColorItem(Color.FromRgb(60, 60, 59), "DarkLightBackground"))
CustomColorList.Add(New Xceed.Wpf.Toolkit.ColorItem(Color.FromRgb(87, 87, 86), "LightGrayBackground"))
CustomColorList.Add(New Xceed.Wpf.Toolkit.ColorItem(Color.FromRgb(231, 76, 60), "RedLight"))
CustomColorList.Add(New Xceed.Wpf.Toolkit.ColorItem(Color.FromRgb(39, 174, 96), "GreenLight"))
CustomColorList.Add(New Xceed.Wpf.Toolkit.ColorItem(Color.FromRgb(52, 152, 219), "BlueLight"))
CustomColorList.Add(New Xceed.Wpf.Toolkit.ColorItem(Color.FromRgb(243, 156, 18), "OrangeLight"))
CustomColorList.Add(New Xceed.Wpf.Toolkit.ColorItem(Color.FromRgb(104, 34, 27), "RedDark"))
CustomColorList.Add(New Xceed.Wpf.Toolkit.ColorItem(Color.FromRgb(25, 110, 61), "GreenDark"))
CustomColorList.Add(New Xceed.Wpf.Toolkit.ColorItem(Color.FromRgb(22, 64, 92), "BlueDark"))
CustomColorList.Add(New Xceed.Wpf.Toolkit.ColorItem(Color.FromRgb(116, 74, 9), "OrangeDark"))
理想情况下,我还可以将我们的全局UsedColors用作同时添加到Application.xaml
<!-- Background colors -->
<Color x:Key="clrDarkBackground">#202020</Color>
<Color x:Key="clrDarkLightBackground">#3C3C3B</Color>
<Color x:Key="clrLightGrayBackground">#575756</Color>
<SolidColorBrush x:Key="scbDarkBackground" Color="{StaticResource clrDarkBackground}" />
<SolidColorBrush x:Key="scbDarkLightBackground" Color="{StaticResource clrDarkLightBackground}" />
<SolidColorBrush x:Key="scbLightGrayBackground" Color="{StaticResource clrLightGrayBackground}" />
<!-- Light Colors -->
<Color x:Key="clrRedLight">#E74C3C</Color>
<Color x:Key="clrGreenLight">#27AE60</Color>
<Color x:Key="clrBlueLight">#3498DB</Color>
<Color x:Key="clrOrangeLight">#F39C12</Color>
<SolidColorBrush x:Key="scbRedLight" Color="{StaticResource clrRedLight}" />
<SolidColorBrush x:Key="scbGreenLight" Color="{StaticResource clrGreenLight}" />
<SolidColorBrush x:Key="scbBlueLight" Color="{StaticResource clrBlueLight}" />
<SolidColorBrush x:Key="scbOrangeLight" Color="{StaticResource clrOrangeLight}" />
<!-- Dark Colors -->
<Color x:Key="clrRedDark">#68221B</Color>
<Color x:Key="clrGreenDark">#196E3D</Color>
<Color x:Key="clrBlueDark">#16405C</Color>
<Color x:Key="clrOrangeDark">#744A09</Color>
<SolidColorBrush x:Key="scbRedDark" Color="{StaticResource clrRedDark}" />
<SolidColorBrush x:Key="scbGreenDark" Color="{StaticResource clrGreenDark}" />
<SolidColorBrush x:Key="scbBlueDark" Color="{StaticResource clrBlueDark}" />
<SolidColorBrush x:Key="scbOrangeDark" Color="{StaticResource clrOrangeDark}" />
答案 0 :(得分:1)
您应该考虑创建一个自ColorPicker
继承的自定义控件,而不必将项目添加到每个视图的列表中。
然后您可以例如将颜色添加到控件的构造函数中。