【问题标题】:DataBinding: Disable ComboBox ItemDataBinding:禁用组合框项
【发布时间】:2019-04-09 19:33:35
【问题描述】:

我正在尝试将this solution 应用于我的案例。唯一的区别是我的ComboBox 是从枚举列表中获取它的项目。

我总是遇到ComboBox 样式中的属性“IsProgrammabile”的绑定表达式错误。

我的代码:

<ListView ItemsSource="{Binding SchedaSelezionata.ListaIngressi}" SelectionMode="Single">
    <ListView.View>
        <GridView>
            <GridViewColumn Header="NR." DisplayMemberBinding="{Binding Numero}" />
            <GridViewColumn Header="FUNCTION" >
                <GridViewColumn.CellTemplate>
                    <DataTemplate>
                        <ComboBox ItemsSource="{Binding Source={helpers:EnumBindingSource {x:Type models:INGRESSI}}}" SelectedItem="{Binding Funzione}"
                            ToolTip="{Binding Descrizione}" IsEnabled="{Binding ConfigurabileDaUtente}" Width="150" >
                            <ComboBox.ItemContainerStyle>
                                <Style TargetType="ComboBoxItem">
                                    <Setter Property="IsEnabled" Value="{Binding Path=IsProgrammabile, RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ComboBox}}}"/>
                                </Style>
                            </ComboBox.ItemContainerStyle>
                        </ComboBox>
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
        </GridView>
    </ListView.View>
</ListView>

请注意,“IsProgrammabile”属性与其他属性(Numero、Funzione、Descrizione、ConfigurabileDaUtente)属于同一对象。 将AncestorType 设置为GridViewListView 没有帮助。

你能提供解决方案并解释一下我在这种情况下不明白的地方吗?

提前致谢

【问题讨论】:

  • 什么绑定不起作用?
  • 禁用组合框项的绑定,即绑定到属性 IsProgrammabil。我认为这很明显。我的错误
  • 但是绑定到 ConfigurabileDaUtente 属性有效吗?或者你为什么要禁用 ComboBox 本身和单个项目?
  • 除了 ItemContainerStyle 部分之外,一切都运行良好。我希望组合框显示所有项目,但某些项目不应该是可选择的(即它们应该被禁用)。

标签: wpf xaml data-binding


【解决方案1】:

ComboBox 本身没有名为IsProgrammabile 的属性,但它的DataContext 可能有,因此您应该添加“DataContext”。到绑定路径:

<Setter Property="IsEnabled" Value="{Binding Path=DataContext.IsProgrammabile, 
                    RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ComboBox}}}"/>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-17
    • 1970-01-01
    • 2021-10-03
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多