【问题标题】:ComboBoxItem, IsEnabled, Binding to table valueComboBoxItem、IsEnabled、绑定到表值
【发布时间】:2010-11-29 17:22:42
【问题描述】:

我有一个下拉列表控件,它的 ItemsSource 是 T_LookupTable 类型的项目集合,它是数据库中的一个表,其中一个列是“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>

【问题讨论】:

    标签: silverlight mvvm


    【解决方案1】:

    TreeViewItems 也有类似的问题...

    基本上,你必须继承 ComboBox 类,像这样重写 GetContainerForItemOverride 方法:

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

    它将数据绑定硬编码到数据对象的 IsEnabled 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-11-05
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多