В шаблоне редактирования палитры цветов WPF Toolkit теперь нет доступных цветов

Я часами искал решение своей проблемы в Google, но информации не так много.

Я использую набор инструментов WPF v2.2.1.

У меня есть элемент управления "Палитра цветов" в моем приложении WPF, который должен быть настроен по индивидуальному заказу. Я редактирую шаблон управления палитрой цветов в App.xaml, чтобы применить ко всем палитрам цветов.

Как только я решу использовать шаблон, все доступные цвета исчезнут из палитры цветов. Я безуспешно пытался назначить новые доступные цвета из кода.

Коллекция цветов есть, просто не отображаются вроде.

Вот как CP определяется в моем mainwindow.xaml

<xctk:ColorPicker x:Name="cpRing" SelectedColorChanged="cpRing_Changed" HorizontalAlignment="Left" Margin="238,5,0,0" VerticalAlignment="Top" Height="20" Width="39" Foreground="Black"/>

К сожалению, шаблон элемента управления слишком велик, чтобы вставить его сюда. Но это должно быть легко воспроизведено, добавив CP в окно wpf, щелкнув его правой кнопкой мыши в представлении дизайна и выбрав «Редактировать шаблон». Как только он будет нанесен, цвета исчезнут, ничего не изменив.

Кто-нибудь знает, что делать, чтобы отображались доступные цвета при редактировании шаблона управления?

С наилучшими пожеланиями


person Nicki    schedule 24.07.2014    source источник


Ответы (1)


да, что-то не так со стилем. Но если вы внимательно посмотрите на его стиль, вы обнаружите проблему:

найдите ключевое слово StandardColors или AvailableColors в xaml, вот шаблон StandardColors:

<ListBox x:Name="PART_StandardColors"  Grid.Row="1">
        <ListBox.Style>
            <Style TargetType="{x:Type ListBox}">
            <Setter Property="Background" Value="Transparent"/>
            <Setter Property="BorderThickness" Value="0"/>
            <Setter Property="ItemsPanel">
            ....
        </ListBox.Style>
</ListBox>

вы можете видеть, что в списке не установлен источник элементов, поэтому вы можете добавить его самостоятельно:

<ListBox x:Name="PART_StandardColors" ItemsSource="{TemplateBinding StandardColors}"  Grid.Row="1">

редактировать список AvailableColors :

 <ListBox x:Name="PART_AvailableColors" ItemsSource="{TemplateBinding AvailableColors}" Grid.Row="1">

теперь это работает.

person Rang    schedule 24.07.2014
comment
Оно работает! Блестящий. Спасибо большое. - person Nicki; 24.07.2014