Как отключить элементы Combobox? - PullRequest
1 голос
/ 16 июня 2009

Есть ли способ отключить все, кроме первых x элементов, в WPF ComboBox путем доступа к свойствам его элементов через индекс?

редактирование:

 ComboBoxItem DiffieHellmanItem = (ComboBoxItem)comboboxName.ItemContainerGenerator.ContainerFromIndex(i));

работает

Ответы [ 4 ]

2 голосов
/ 16 июня 2009

EDIT: Похоже, вы нашли способ получить доступ к ComboBoxItems. Вы также можете захотеть взглянуть на ItemContainerStyle и посмотреть, есть ли какая-то привязка данных, которой вы можете воспользоваться (если у ваших элементов есть свойство Enabled или что-то подобное).

Однако, в зависимости от того, как вы выполняете привязку данных, вы можете отображать «отключенные» элементы в другой кисти, непрозрачности и т. Д. С помощью шаблонов данных. У Bea Stollnitz есть хороший пост об этом здесь .

Одна вещь, которую вы можете рассмотреть с точки зрения UX, - это почему вы хотите отключить их, а не скрыть. Есть ли какая-то прогрессивная тактика раскрытия, которой вы можете воспользоваться, чтобы не заполнять ComboBox вещами, которые пользователь не может щелкнуть?

2 голосов
/ 24 марта 2011

Вы можете установить ItemContainerStyle в Combobox. From Blend - создайте копию текущего, чтобы получить этот шаблон. В шаблоне вы можете установить свойство IsEnabled как Setter и связать его значение с тем, с чем вы хотите связать.

<Style x:Key="ComboBoxItemStyle1" TargetType="{x:Type ComboBoxItem}">
            ...
            <Setter Property="IsEnabled" Value="{Binding Active}"/>
            ...
        </Style>
0 голосов
/ 14 января 2013

Имхо, лучший подход - использовать DataTriggers

<ComboBox.ItemContainerStyle>
    <Style TargetType="ComboBoxItem">
        <Style.Triggers>
            <DataTrigger *insert condition*>
                <Setter Property="IsEnabled" Value="False"/>
            </DataTrigger>
        </Style.Triggers>
     </Style>
</ComboBox.ItemContainerStyle>
0 голосов
/ 16 июня 2009

Я не знаю, как на самом деле отключить элементы в ComboBox, но вы должны иметь возможность добавить логику в событие OnClick, которое будет проверять, равен ли индекс выбранного элемента> = x, и запрещать любую операцию, запрошенную на на этом.

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