我有一个comboBox,它绑定到我的viewModel中的字符串列表。我想要做的是,如果我的viewModel中的属性为true,则将comboBox项的前景设置为不同的颜色:
<ComboBox x:Name="myComboBox" ItemsSource="{Binding Names}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding ...}">
<TextBlock.Style>
<Style TargetType="{x:Type TextBlock}">
<Style.Triggers>
<DataTrigger Binding="{Binding IsActive}" Value="True">
<Setter Property="Foreground" Value="Navy"/>
</DataTrigger>
</Style.Triggers>
</Style>
</TextBlock.Style>
</TextBlock>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
我不确定将TextBlock的Text绑定到什么内容。我想要的只是显示字符串列表。我总是得到一个包含项目的下拉列表,但它们不可见。我尝试删除样式触发器,认为我可能在那里搞砸了,但这没有帮助。
我采取了正确的方法吗?在搜索IsActive时,ComboBox.ItemTemplate会正确查看我的viewModel(这是数据上下文)还是绑定不正确?
答案 0 :(得分:1)
每个DataContext
的{{1}}是一个字符串,所以
ComboBoxItem
,请绑定TextBlock
,如DataContext
要让Text="{Binding}
能够找到DataTrigger
,请在绑定中使用IsActive
RelativeSource