注意:我已经提出了相关问题:如何结合DataTrigger和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>
我使用上述数据触发器来将不可用的项目变灰。
我面临的问题是,所选项目与模板绑定的基础数据没有任何关系。我真正想要的是一种支持常规依赖属性Trigger
( ListBoxItem.IsSelected
)和绑定数据项的DataTrigger
的多触发器。
在不引入选择概念到我的视图模型的情况下,这可以完成吗?
对于任何想知道为什么我不禁用不可用项目的人,请理解这是应用程序的要求,因为可以选择不可用选项。实际上有几个列表框,其中一个的选择影响其他列表框中的可用内容。如果基于先前的选择禁用项目,则用户将无法更改主意或探索不同的组合。