WPF ListBoxItem Выбор - PullRequest
       16

WPF ListBoxItem Выбор

0 голосов
/ 02 марта 2010

скажем, у меня есть код WPF XAML, как показано ниже

  <Grid>
     <Grid.ColumnDefinition>
       <!--2 Columns are defined-->
     </Grid.ColumnDefinition>

     <Button x:Name="button" Grid.Column="1"/>
     <ListBox x:Name="listBox" Grid.Column="2"/>

  </Grid>

Теперь каждый элемент списка привязан к объекту класса с членом с именем «Status». Всякий раз, когда элемент выбран, статус становится «0». Если невыбранный статус становится «1».

Теперь мой вопрос: как отключить / включить кнопку (в XAML), когда любой из элементов «Статус» становится «0» или «1» соответственно. Есть ли способ сделать это через DataTriggers

Спасибо

Ответы [ 3 ]

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

Это зависит от того, где находится этот код. Если он находится внутри DataTemplate или ControlTemplate, вы можете использовать DataTrigger. Если нет (или даже если это так), вы сможете получить тот же эффект с помощью прямой привязки. В любом случае вы можете использовать один и тот же базовый метод. Если вы создаете IValueConverter, который принимает элементы listBox (набор ваших объектов данных) и выводит логическое значение, основанное на значениях состояния, вы можете использовать его для привязки IsEnabled кнопки или проверки значения в DataTrigger и отключения по мере необходимости.

Если вы говорите о выборе ListBox, когда говорите «выбрано / не выбрано», вам даже не нужно смотреть на сами значения Status. Если вы находитесь внутри шаблона (можете использовать триггеры), вы также можете просто проверить, есть ли в списке элементов какие-либо выбранные элементы:

<DataTrigger Binding="{Binding ElementName=listBox, Path=SelectedItems.Count}" Value="0">
    <Setter TargetName="button" Property="IsEnabled" Value="False" />
</DataTrigger>
0 голосов
/ 02 марта 2010

Обязательно сделайте соответствующий триггер для включения кнопки, когда значение равно 1. Ardman, вы можете использовать обработчик событий Selection_Changed, но я всегда стараюсь делать как можно больше в XAML и не допускать изменений пользовательского интерфейса. код позади. Иногда это работает, время от времени это не так.

Cory

0 голосов
/ 02 марта 2010

Не могли бы вы использовать обработчик событий Selection_Changed?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...