Проблема с привязкой DataTrigger - сеттеры не вызываются - PullRequest
1 голос
/ 24 марта 2010

У меня есть команда, связанная с кнопкой в ​​XAML. При выполнении команда изменяет значение свойства базового DataContext. Мне бы хотелось, чтобы содержимое кнопки отображало новое значение свойства.

Это работает *:

<Button Command="{x:Static Member=local:MyCommands.TestCommand}"
        Content="{Binding Path=TestProperty, Mode=OneWay}" />

Но это не так:

<Button Command="{x:Static Member=local:MyCommands.TestCommand}">
  <Button.Style>
    <Style TargetType="{x:Type Button}">
      <Style.Triggers>
        <DataTrigger Binding="{Binding Path=TestProperty, Mode=OneWay}" Value="True">
          <DataTrigger.Setters>
            <Setter Property="Content" Value="Yes"/>
          </DataTrigger.Setters>
        </DataTrigger>
        <DataTrigger Binding="{Binding Path=TestProperty, Mode=OneWay}" Value="False">
          <DataTrigger.Setters>
            <Setter Property="Content" Value="No"/>
          </DataTrigger.Setters>
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </Button.Style>
</Button>

Почему это?

* Под «работами» я подразумеваю, что Контент обновляется всякий раз, когда я нажимаю кнопку. Не знаю, важно это или нет, но на всякий случай использую .NET 3.5 SP1.

UPDATE:

Я также попробовал другой вариант (удаление второго DataTrigger в пользу значения по умолчанию), но безрезультатно:

<Button Command="{x:Static Member=local:MyCommands.TestCommand}">
  <Button.Style>
    <Style TargetType="{x:Type Button}">
      <Setter Property="Content" Value="No"/>
      <Style.Triggers>
        <DataTrigger Binding="{Binding Path=TestProperty, Mode=OneWay}" Value="True">
          <DataTrigger.Setters>
            <Setter Property="Content" Value="Yes"/>
          </DataTrigger.Setters>
        </DataTrigger>
      </Style.Triggers>
    </Style>
  </Button.Style>
</Button>

ТИА

Ответы [ 2 ]

1 голос
/ 24 марта 2010

Я решил проблему сам. Оказалось, я искал не в том месте. Связанное свойство CLR было другого типа, чем то, что я предполагал в XAML. Моя глупость, правда.

1 голос
/ 24 марта 2010

Попробуйте установить для содержимого по умолчанию значение Нет и использовать только первый DataTrigger. Избегайте второго.

...