Global WPF Toolkit Colorpicker StandardColors - PullRequest
0 голосов
/ 06 марта 2019

Для проекта я использую палитру цветов Xceed WPF Toolkit, чтобы позволить пользователям выбирать цвет.Эта палитра используется на разных страницах и с нашими собственными цветами.Поэтому я хочу создать один глобальный стиль в Application.xaml и затем использовать палитру цветов на разных страницах, однако я не могу найти правильно работающий пример того, как создать глобальный стиль с массивом StandardColors, который создает его вкод и скопируйте / вставьте код на разные страницы.

Надеюсь, кто-нибудь может помочь мне с этим.

Способ, которым я получил его сейчас:

Xaml onкаждая страница / usercontrol:

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

Код для каждой страницы / 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"))

В идеале я также могу использовать наши глобальные UsedColors в качестве ColorItems, которые также добавляются в 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}" />

1 Ответ

1 голос
/ 12 марта 2019

Вам следует рассмотреть возможность создания пользовательского элемента управления, который наследуется от ColorPicker, вместо добавления элементов в список каждого представления.

Затем вы можете, например, добавить цвета к элементу управления в его конструкторе.

...