Combobox ItemTemplate和前景

时间:2011-09-16 18:42:35

标签: wpf data-binding datatemplate

我有一个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(这是数据上下文)还是绑定不正确?

1 个答案:

答案 0 :(得分:1)

每个DataContext的{​​{1}}是一个字符串,所以

  • 对于ComboBoxItem,请绑定TextBlock,如DataContext
  • 要让Text="{Binding}能够找到DataTrigger,请在绑定中使用IsActive

    RelativeSource