首页 > 解决方案 > 如何使用转换器设置组合框项目的文本?

问题描述

我有一个转换器,它绑定到一个集合,其中元素的类型是 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 中设置的属性值。

因此,第一步我想知道如何为所有项目设置文本“你好”,但我的想法是使用一个转换器,该转换器采用组合框项目,并根据一些检查,返回我想要显示的文本。

谢谢。

标签: wpfmvvm

解决方案


ItemTemplate使用 TextBlock 将该属性设置为适当的 DataTemplate,而不是 DisplayMemberPath :

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

推荐阅读