如何使用转换器设置comboBox项目的文本?

时间:2018-08-06 11:49:45

标签: wpf mvvm

我有一个转换器,该转换器绑定到元素为MyType类型的集合。我想将文本设置为带有转换器的声音。因此,从快速测试开始,我首先尝试将所有元素的文本设置为文本“ Hello”。

我正在尝试使用以下代码:

<ComboBox
          DisplayMemberPath="MyProperty"
          SelectedItem="{Binding Path=MySelectedItem, Mode=TwoWay}"
          ItemsSource="{MyViewModelCollection}">
    <ComboBox.ItemContainerStyle>
        <Style TargetType="ComboBoxItem">
            <Setter Property="TextBlock.Text" Value="Hello"/>
        </Style>
    </ComboBox.ItemContainerStyle>
</ComboBox>

但是,它显示了DisplayMemeberPath中设置的属性的值。

因此,对于第一步,我想知道如何将所有文本设置为“ Hello”,但是我的想法是使用带有comboBoxItem的转换器,并根据一些检查,返回我想要的文本显示。

谢谢。

1 个答案:

答案 0 :(得分:1)

ItemTemplate属性(而不是DisplayMemberPath)设置为带有TextBlock的适当DataTemplate:

<ComboBox ItemsSource="{Binding MyViewModelCollection}"
          SelectedItem="{Binding MySelectedItem}">
    <ComboBox.ItemTemplate>
        <DataTemplate>
            <TextBlock Text="{Binding MyProperty,
                              Converter={StaticResource MyConverter}}"/>
        </DataTemplate>
    </ComboBox.ItemTemplate>
</ComboBox>