2015-04-15 5 views
4

я использую контроль DecimalUpDown из Расширенного WPF Toolkit в моем приложении WPF ModernUI:Как перезаписать стиль

enter image description here

<xctk:DecimalUpDown Value="{Binding myProperty}" Increment="1" Maximum="10" Minimum="0" /> 

Что мне ошибок заключается в следующем: Если выбран цвет акцент, для например, красные, затем стандартные ModernUI-Controls, такие как текстовые поля адаптировать этот цвет красиво:

enter image description here

DecimalU Однако управление pDown придерживается своего стиля. Например, элемент управления синим, когда он активен и RepeatButtons, используемый в управлении не похож на кнопки ModernUI:

enter image description here

Даже хуже: все TextBoxes в View, где размещаются управление DecimalUpDown в настоящее время демонстрируют этот стиль и выделены синим цветом, а не красным:

enter image description here

Как я могу изменить это?

EDIT: это сгенерированный ControlTemplate, когда я следую за хороший совет Бен:

 <ControlTemplate x:Key="ControlControlTemplate1" TargetType="{x:Type Control}"> 
     <xctk:ButtonSpinner x:Name="PART_Spinner" AllowSpin="{Binding AllowSpin, RelativeSource={RelativeSource TemplatedParent}}" 
          ...> 
      <xctk:WatermarkTextBox x:Name="PART_TextBox" AutoMoveFocus="{Binding AutoMoveFocus, RelativeSource={RelativeSource TemplatedParent}}" 
            AutoSelectBehavior="{Binding AutoSelectBehavior, RelativeSource={RelativeSource TemplatedParent}}" 
            AcceptsReturn="False" 
            .../> 
     </xctk:ButtonSpinner> 
     <ControlTemplate.Triggers> 
      ... 
     </ControlTemplate.Triggers> 
    </ControlTemplate> 

Это то можно стилизовать WatermarkTextBox и ButtonSpinner:

enter image description here

То, что я не имею до сих пор: есть ли способ доступа к кнопкам RepeatButtons внутри ButtonSpinner, чтобы я мог также установить их стили?

ответ

2

Возможно, вам необходимо написать свой собственный шаблон и определить цвет там. Иногда нет прямого способа изменить свойства, которые являются частью UI-элемента. Попробуйте отредактировать копию шаблона и выполнить поиск значения синего цвета. Щелкните правой кнопкой мыши DecimalUpDown и перейти к Изменить шаблон Edit Template

Если значение цвета не набор там, подмигнули возможные подмигнули установленные через System.Colors (например ActiveBorderBrush)

<SolidColorBrush x:Key="{x:Static SystemColors.ActiveBorderBrush}" Color="Orange" /> 

System.Colors определяют некоторые стандартные действия, когда элемент управления активен, подсвечен и т. Д. В MSDN перечислены все существующие: https://msdn.microsoft.com/en-us/library/system.windows.systemcolors%28v=vs.110%29.aspx

+0

Это здорово, я не знал об опции «Редактировать шаблон». В этом случае, поскольку сам элемент управления состоит из нескольких элементов управления [текстовое поле, две кнопки повтора], я не могу получить доступ к «дочерним» -контролям. Тем не менее, очень приятно! – peter

+1

Бен, есть ли способ получить доступ к элементам управления для детей из шаблона? Я добавил шаблон в свой вопрос. Я могу успешно стилизовать «внешний» элемент (границу и т. Д.), Но, например, RepeatButtons внутри элемента управления, я не могу получить доступ. – peter

+0

Возможно, вы можете попробовать добавить ButtonSpinner в качестве отдельного элемента и выполнить шаг «Редактировать копию». Затем создайте пользовательский стиль для всех кнопок ButtonSpinners или именованных, которые будут использоваться в вашем элементе управления DecimalUpDown. – Ben