ComboBoxItem, IsEnabled, привязка к значению таблицы - PullRequest
0 голосов
/ 29 ноября 2010

У меня есть элемент управления dropdownlist, и его ItemsSource представляет собой коллекцию элементов типа T_LookupTable, которая является таблицей в БД, и один из ее столбцов - isEnabled. Как связать свойство IsEnabled ComboBoxItem в XAML с этим значением в коллекции? Кроме того, у меня есть многочисленные раскрывающиеся списки в приложении, использующем этот же метод, поэтому я хотел бы как-то сделать это глобальной функцией, если это возможно, через статический ресурс, возможно ли что-то подобное? Я нашел этот фрагмент XAML, который будет работать, но я хочу, чтобы элементы были выделены серым цветом в раскрывающемся списке, и этот метод отключает их только там, где вы не можете щелкнуть по ним, но нет визуального индикатора, который говорит, что элемент отключено:

<ComboBox.ItemContainerStyle> 
    <Style TargetType="ComboBoxItem"> 
        <Setter Property="Template"> 
            <Setter.Value> 
                <ControlTemplate TargetType="ComboBoxItem"> 
                    <ContentPresenter x:Name="ContentPresenter" IsHitTestVisible="{Binding Path=isEnabled}" /> 
                </ControlTemplate> 
            </Setter.Value> 
        </Setter> 
    </Style> 
</ComboBox.ItemContainerStyle>

1 Ответ

0 голосов
/ 29 ноября 2010

У меня была похожая проблема с TreeViewItems ...

По сути, вы должны наследовать класс ComboBox, переопределить метод GetContainerForItemOverride следующим образом:

<code>
protected override DependencyObject GetContainerForItemOverride()
{
  var result = new ComboBoxItem();
  result.SetBinding(Control.IsEnabledProperty, new Binding("IsEnabled"));
  return result;
}

Он жестко кодирует привязку данных к свойству IsEnabled вашего объекта данных.

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