我有一个dropdownlist控件,它的ItemsSource是T_LookupTable类型的项集合,它是db中的一个表,其中一个列是'isEnabled'。 如何将XAML中ComboBoxItem的IsEnabled属性绑定到集合中的此值? 此外,我在应用程序中有许多下拉菜单采用相同的方法,所以我想以某种方式使这个全局功能,如果可能,通过静态资源,是这样的可能吗?我找到了这块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>
答案 0 :(得分:0)
我遇到与TreeViewItems类似的问题...
基本上,你必须继承ComboBox类,重写GetContainerForItemOverride方法,如下所示:
protected override DependencyObject GetContainerForItemOverride()
{
var result = new ComboBoxItem();
result.SetBinding(Control.IsEnabledProperty, new Binding("IsEnabled"));
return result;
}
它硬编码数据绑定到数据对象的IsEnabled属性。