简体   繁体   English

全球WPF工具包Colorpicker StandardColors

[英]Global WPF Toolkit Colorpicker StandardColors

For a project i'm using the Xceed WPF Toolkit colorpicker to let the users select a color. 对于一个项目,我正在使用Xceed WPF Toolkit colorpicker让用户选择一种颜色。 This colorpicker is used in different pages and with our own custom colors. 此颜色选择器用于不同的页面,并带有我们自己的自定义颜色。 Therefore i want to create one global style in the Application.xaml and then use the colorpicker on the different pages, however i cannot find a properly working example of how to create a global style WITH an array of StandardColors other that creating it in code and copy/pasting the code onto the differente pages. 因此,我想在Application.xaml创建一个全局样式,然后在不同的页面上使用颜色选择器,但是我找不到如何使用StandardColors数组创建全局样式的正确工作示例,而不能在代码中创建它。将代码复制/粘贴到其他页面上。

Hopefully someone could help me out with this. 希望有人可以帮我解决这个问题。

The way i got it working now is: 我现在开始工作的方式是:

Xaml on every page/usercontrol: 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" />

Code behind every page/usercontrol: 每个页面/用户控件后面的代码:

    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"))

Idealy i can also use our global UsedColors as ColorItems that are also added to the Application.xaml 理想情况下,我还可以将我们的全局UsedColors用作也添加到Application.xaml ColorItems。

        <!--  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}" />

You should consider creating a custom control that inherits from ColorPicker instead of having to add items to a list of every view. 您应该考虑创建一个从ColorPicker继承的自定义控件,而不必将项目添加到每个视图的列表中。

You can then for example add the colours to the control in its constructor. 然后,您可以例如将颜色添加到控件的构造函数中。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM