WPF на триггере делают несколько сеттеров на разных элементах управления - PullRequest
0 голосов
/ 24 февраля 2012

У меня есть сетка с меткой, кнопкой и текстовым полем. Я хочу установить метку forground в красный цвет, а свойство кнопки "IsEnabled" в значение False, если значение label.Content = "Invalid". Однако я не могу установить сеттер на имя цели в этом датгергере, потому что Msgstr "Свойство Targetame не может быть установлено в Setter Style." Как я могу это исправить, чтобы я мог использовать сеттеры для нескольких элементов с помощью всего одного триггера, я знаю, что могу пойти и поместить точно такой же источник данных в Button.Styletriggers, но, возможно, есть лучший способ сделать это?

   <Button Content="Save" Click="btnsave_Click" Grid.Column="1" Grid.Row="2" x:Name="btnsave" IsEnabled="True" />
            <Label Content="{Binding ElementName=txtclc, Path=Text, Converter={StaticResource convertcode}}" Name="lblcheckclc"  Grid.Row="1" Grid.Column="2">
                <Label.Resources>
                    <Style TargetType="{x:Type Label}">
                        <Setter Property="Foreground" Value="Green" />

                        <Style.Triggers>
                            <DataTrigger  Binding="{Binding ElementName=lblcheckclc, Path=Content}" Value="Invalid">
                                <Setter Property="Foreground" Value="Red" />
                                <Setter TargetName="btnsave" Property="IsEnabled" Value="False"  /> <!--This line is the problem-->

                            </DataTrigger>
                        </Style.Triggers>
                    </Style>
                </Label.Resources>
            </Label>

PS: если я прокомментирую 2-й сеттер, то он сработает ((если значение метки = "Invalid", тогда forground становится красным

1 Ответ

0 голосов
/ 24 февраля 2012

Пожалуйста, посмотрите на этот форум MSDN для ответа на ваш вопрос

Кроме того, ваш раздел Триггеры не работает, вы должны использовать:

<Style.Triggers>
   <Trigger Property="Content" Value="Invalid">
      <Setter Property="Foreground" Value="Red" />
   </Trigger>
</Style.Triggers>

Использованиетриггер, когда вы планируете отслеживать свойство вашего элемента, например Content.

Чтобы ваш пример работал, либо:

  • Привязайте свойство IsEnabled вашей кнопки к содержимому вашей метки и реализуйте конвертеркоторая преобразует строку в bool
  • Создайте стиль для своей кнопки с помощью триггера данных, который устанавливает свойство IsEnabled
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...