WPF ComboBox 值和显示不同,选择后,显示框里不是显示对应的值而是值所在的类
时间: 2023-07-16 10:16:11 浏览: 41
这种情况往往是因为 ComboBox 的显示文本和选中值的属性没有正确绑定。你需要确保 ComboBox 的 ItemSource 绑定的集合中的每个对象都有一个用于显示的属性和一个用于选中的属性。
假设你的 ComboBox 绑定的集合中的每个对象都有一个名为 Name 的属性,你可以在 ComboBox 上设置 DisplayMemberPath 属性来指定要显示的属性,例如:
```xaml
<ComboBox ItemsSource="{Binding Items}" DisplayMemberPath="Name" />
```
然后,你还需要指定 SelectedValuePath 属性为选中值的属性,例如:
```xaml
<ComboBox ItemsSource="{Binding Items}" DisplayMemberPath="Name" SelectedValuePath="Name" SelectedValue="{Binding SelectedItem}" />
```
这样就可以正确地显示和选中 ComboBox 中的值了。其中,SelectedValue 是你 ViewModel 中用于绑定选中值的属性,它应该和 SelectedValuePath 指定的属性类型相同。
相关问题
WPF ComboBox 值和显示不同,选择后,显示框里不是显示对应的值而是值所在的类,但是我已经设置了ItemTemplate,这样的化displayMemberPath就无法设置了
在 WPF ComboBox 中,如果你设置了 ItemTemplate,则 DisplayMemberPath 属性将不起作用。因为 ItemTemplate 是用来自定义每个 ComboBoxItem 的显示方式的,而 DisplayMemberPath 则是用来指定在 ComboBox 中显示的属性名称。
如果你想在 ComboBox 中显示对应的属性值,可以在 ItemTemplate 中使用 Binding 绑定该属性。例如,假设你的 ComboBox 的 ItemsSource 绑定到一个 Person 对象的集合,每个 Person 对象有 Name 和 Age 两个属性,你想显示 Name 属性,可以这样设置 ItemTemplate:
```
<ComboBox ItemsSource="{Binding Persons}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
```
这样,当你选择 ComboBox 中的某个项时,ComboBox 显示的就是该项的 Name 属性值。
WPF 根据不同值显示不同图片
你可以使用 WPF 的 DataTrigger 和 MultiDataTrigger 来根据不同的值来显示不同的图片。具体步骤如下:
1. 定义数据源,例如一个 ViewModel,其中包含一个表示状态的属性,比如 Status。
2. 在 XAML 中,使用 Image 控件来显示图片。注意,Image 控件的 Source 属性绑定到数据源的某个属性,例如 ImageSource。
3. 使用 DataTrigger 或 MultiDataTrigger 来根据不同的状态值来设置 ImageSource 属性的值。例如:
```xml
<Image>
<Image.Style>
<Style TargetType="Image">
<Setter Property="Source" Value="normal.png"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Status}" Value="success">
<Setter Property="Source" Value="success.png"/>
</DataTrigger>
<DataTrigger Binding="{Binding Status}" Value="failure">
<Setter Property="Source" Value="failure.png"/>
</DataTrigger>
</Style.Triggers>
</Style>
</Image.Style>
</Image>
```
这个例子中,当 Status 属性值为 success 时,Image 控件显示 success.png 图片;当 Status 属性值为 failure 时,Image 控件显示 failure.png 图片;否则,Image 控件显示 normal.png 图片。