gpt4 book ai didi

c# - 如何从 ViewModel 中的 ComboBox 中获取值

转载 作者:行者123 更新时间:2023-12-03 10:56:41 24 4
gpt4 key购买 nike

我正在尝试从 ComboBox 中捕获所选项目的值在我的 View 模型中。我确实得到了值,但由于某种原因,当我在 IF 语句中进行字符串比较以确定已选择哪个项目时,比较不起作用。

我错过了什么?

这是在 ViewModel 中获取值(value)的正确方法吗?

XAML

    <ComboBox x:Name="comboBox" 
SelectedItem="{Binding SelectedItemInFilter, UpdateSourceTrigger=PropertyChanged}>

<ComboBoxItem IsSelected="True">No Selection</ComboBoxItem>
<ComboBoxItem>Car</ComboBoxItem>
<ComboBoxItem>Truck</ComboBoxItem>
</ComboBox>

View 模型
    public class MyViewModel : ViewModelBase{

public string _selectedItemInFilter;
public string SelectedItemInFilter
{
get { return _selectedItemInFilter; }
set {
if (_selectedItemInFilter != value) {
_selectedItemInFilter = value;
ComboBoxChanged();
Console.WriteLine("SelectedItem: {0}", SelectedItemInFilter); // outputs the right item name
RaisePropertyChanged();
}
}
}

private void ComboBoxChanged()
{
if (SelectedItemInFilter.ToString() == "Car") {
Console.WriteLine("Do something with car...");
}
else {
Console.WriteLine("Is not Car...");
}
}
}

最佳答案

由于您显式添加 ComboBoxItems(而不是将 ItemsSource 设置或绑定(bind)到字符串集合),因此 SelectedItem 也是 ComboBoxItem,而不是字符串。但是,您可以绑定(bind)到 Content使用 SelectedValue 选择项目的字符串和 SelectedValuePath :

<ComboBox SelectedValue="{Binding SelectedItemInFilter}"
SelectedValuePath="Content">
<ComboBoxItem>No Selection</ComboBoxItem>
<ComboBoxItem>Car</ComboBoxItem>
<ComboBoxItem>Truck</ComboBoxItem>
</ComboBox>

更简单的是根本不使用 ComboBoxItems:
xmlns:sys="clr-namespace:System;assembly=mscorlib"
...

<ComboBox SelectedItem="{Binding SelectedItemInFilter}">
<sys:String>No Selection</sys:String>
<sys:String>Car</sys:String>
<sys:String>Truck</sys:String>
</ComboBox>

关于c# - 如何从 ViewModel 中的 ComboBox 中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52150414/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com