Переопределение цвета фона текстового поля WPF - PullRequest
0 голосов
/ 14 июля 2011

Я хочу изменить фон текстового поля, используя стиль (в WPF). Но текстовое поле уже основано на стиле. Так что, когда я даю фон, он устанавливает его, он не переопределяет оригинальный стиль. Ниже приведен код, которым я являюсьпытается работать:

<TextBox text="value">  
<TextBox.Style>
  <Style TargetType="{x:Type TextBox}"  BasedOn="{StaticResource {x:Type TextBox}}">
     <Style.Triggers>
      <MultiDataTrigger>
         <MultiDataTrigger.Conditions>
          <Condition Binding="{Binding Path=path}" Value="False"/>
         </MultiDataTrigger.Conditions>
        <MultiDataTrigger.Setters>
         <Setter Property="ForeGround" Value="Red"/>
         <Setter Property="Background" Value="LightGray"/>
        </MultiDataTrigger.Setters>
      </MultiDataTrigger>
     </Style.Trigger>
    </Style>

Код изменяет цвет переднего плана на красный, но нет фона на фоне текстового поля.

Как я могу переопределить цвет фона. Мне нужно сделать этов WPF.

Ответы [ 2 ]

3 голосов
/ 14 июля 2011

Это определенно не тот код, который вы используете, здесь нет свойства ForeGround, и теоретически (без этой ошибки) это будет работать, и фон изменится, если сработает триггер.

Еще один простой пример, который работает:

<CheckBox Name="cb" Content="Red BG"/>
<TextBox>
    <TextBox.Style>
        <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsChecked, ElementName=cb}" Value="True">
                    <Setter Property="Background" Value="Red"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

Следующее, однако, будет не работать:

<CheckBox Name="cb" Content="Red BG"/>
<TextBox Background="Green">
    <TextBox.Style>
        <Style TargetType="{x:Type TextBox}" BasedOn="{StaticResource {x:Type TextBox}}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsChecked, ElementName=cb}" Value="True">
                    <Setter Property="Background" Value="Red"/>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    </TextBox.Style>
</TextBox>

Обратите внимание, что сначала в объявлении был задан зеленый фон, это прямое значение переопределит стиль из-за приоритета значения свойства зависимости , если вы хотите установить начальное значение, это нужно сделать в сеттер в стиле (вне любого триггера). Я подозреваю, что это может быть вашей проблемой.

0 голосов
/ 14 июля 2011

просто поместите оператор set после оператора style

<Setter Property="Background" Value="red"/>

like ..

 <Style TargetType="{x:Type TextBox}"  BasedOn="{StaticResource {x:Type TextBox}}">
  <Setter Property="Background" Value="red"/>
 <Style.Triggers>.........
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...