【发布时间】:2010-10-10 19:00:45
【问题描述】:
注意我已经问过相关问题:How to combine DataTrigger and EventTrigger?
我有一个包含多个项目的列表框。该项目的类实现INotifyPropertyChanged 并具有属性IsAvailable。我使用该属性以不同的颜色指示列表中不可用的选项。
但是,如果所选项目不可用,则前景色应为红色。
<ListBox>
<ListBox.Resources>
<DataTemplate DataType="{x:Type local:InstitutionViewModel}">
<TextBlock Name="Name" Text="{Binding Name}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding IsAvailable}" Value="False">
<Setter TargetName="Name" Property="Foreground" Value="#888"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
</ListBox.Resources>
</ListBox>
我使用上述数据触发器将不可用的项目变灰。
我面临的问题是,选择项目的事实与模板绑定到的基础数据无关。我真正想要的是某种多触发器,它支持依赖属性 (ListBoxItem.IsSelected) 上的常规 Trigger 以及绑定数据项上的 DataTrigger。
如果不将选择概念引入我的视图模型,是否可以做到这一点?
对于任何想知道我为什么不禁用不可用项目的人,请了解可以选择不可用选项是应用程序的要求。实际上有几个列表框,其中一个选择会影响其他列表框的可用内容。我无法禁用这些项目,因为如果根据之前的选择禁用项目,用户将无法改变主意或探索不同的组合。
【问题讨论】:
标签: .net wpf triggers selection listboxitem