数据绑定:禁用组合框项

时间:2018-11-06 11:52:57

标签: wpf xaml data-binding

我正在尝试对我的案件适用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并没有帮助。

您能提供解决方案并向我解释在这种情况下我不了解的内容吗?

预先感谢

1 个答案:

答案 0 :(得分:1)

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

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