【问题标题】:Change Combobox SelectedItem in Bounded property setter of SelectedItem in WPF在 WPF 中 SelectedItem 的有界属性设置器中更改 Combobox SelectedItem
【发布时间】:2016-06-15 03:23:00
【问题描述】:

我在Combobox时,我们想要更改SelectedItem 987654323 @ Combobox @时。

例如:我们指定Combobox,其值:CEOManagerDevQA.. When CEO is selected we would like to change it to Manager value.

SelectedValue 绑定到 ViewModel 中的属性。

【问题讨论】:

  • 您是否尝试更改ComboBox SelectionChanged 事件中绑定到SelectedValue 的属性?或在此事件中更改ComboBoxSelectedItem
  • 在 ViewModel 中,如果它实现了 INPC,您将在绑定的属性上收到通知,即在 SelectedValue 中。在Set 上,您可以验证并根据需要进行选择。

标签: wpf mvvm data-binding combobox 2-way-object-databinding


【解决方案1】:

啊哈!我认为这是一个愚蠢的问题,无需花费太多精力就可以回答:P。但是,它给我上了一个教训,WPF 并没有像我想象的那样工作。

这是示例工作解决方案。

MainWindow.xaml

<Grid>
    <ComboBox Width="100" Height="50" ItemsSource="{Binding ComboList}"  SelectedValue="{Binding Selected, Mode=TwoWay, IsAsync=True}"/>
</Grid>

MainWindow.xaml.cs

public MainWindow()
{
    InitializeComponent();
    ObservableCollection<string> lst = new ObservableCollection<string>();
    lst.Add("CEO");
    lst.Add("Tester");
    lst.Add("president");
    lst.Add("Developer");
    lst.Add("Manager");

    MainWindowViewModel vm = new MainWindowViewModel() { ComboList = lst, Selected = "Employee" };
    this.DataContext = vm;
}

MainWindowViewModel.cs

public class MainWindowViewModel : INotifiPropertyChanged
{
    public event PropertyChangedEventHandler PropertyChanged;
    protected virtual void OnPropertyChanged(string propertyName)
    {
        PropertyChangedEventHandler handler = PropertyChanged;
        if (handler != null) handler(this, new PropertyChangedEventArgs(propertyName));
    }

    public ObservableCollection<string> ComboList { get; set; }

    private string selected;
    public string Selected
    {
        get { return selected; }
        set
        {
            selected = value == "CEO" ? "Manager" : value;
            OnPropertyChanged("Selected");
        }
    }

}

关键是 IsAsync=True,它在这里起到了作用。感谢Martin Harris 他的answer

【讨论】:

    猜你喜欢
    • 2014-05-30
    • 2023-03-09
    • 2011-02-23
    • 2011-06-24
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多