【发布时间】: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 设置为GridView 或ListView 没有帮助。
你能提供解决方案并解释一下我在这种情况下不明白的地方吗?
提前致谢
【问题讨论】:
-
什么绑定不起作用?
-
禁用组合框项的绑定,即绑定到属性 IsProgrammabil。我认为这很明显。我的错误
-
但是绑定到 ConfigurabileDaUtente 属性有效吗?或者你为什么要禁用 ComboBox 本身和单个项目?
-
除了 ItemContainerStyle 部分之外,一切都运行良好。我希望组合框显示所有项目,但某些项目不应该是可选择的(即它们应该被禁用)。
标签: wpf xaml data-binding