繁体   English   中英

如何设置值如果组合框未更改WPF MVVM模式中的值

[英]How to set the value If the combobox does not change the value in WPF MVVM pattern

在我的WPF应用程序中,我有一个组合框。 它通过MVVM设计模式绑定数据。 工作正常。

在此处输入图片说明

在XAML中

 <ComboBox x:Name="comboBox1" ItemsSource="{Binding ValetType}" DisplayMemberPath="Name" 
      SelectedItem="{Binding SelectedItemValet, Mode=TwoWay}" IsSynchronizedWithCurrentItem="True"/>

在ViewModel中

valetTypes = GetValueForValet();
public ObservableCollection<Valet> ValetType
{
    get { return valetTypes; }
    set { valetTypes = value; NotifyPropertyChanged("ValetType"); }
}

public Valet SelectedItemValet
{
    get { return selectedItemValet;}
    set { selectedItemValet = value; NotifyPropertyChanged("SelectedItemValet"); }
}

我面临的问题之一是,当我不更改组合框值时,它将绑定为null,否则它将绑定。 我将IsSynchronizedWithCurrentItem设置为true,它告诉Selector应该保持SelectedItem与当前项目同步。 但是不行。 我该怎么办? 我是WPF MVVM的新手。

简单的解决方案是为SelectedItemValet提供默认值。

在ViewModel的某些方法中(初始化ViewModel时会调用它)(通常是构造函数),可以将SelectedItemValet设置为所需的值

您的代码中有一个问题:

public ValetServices SelectedItemValet
{
    get { return selectedItemValet;}
    set { selectedItemValet = value; NotifyPropertyChanged("SelectedItemValet"); }
}

ValetType是类型Valet ,但是SelectedItemValet是类型ValetServices 他们应该匹配。 更改后,例如要选择第一项,请执行以下操作:

valetTypes = GetValueForValet();
this.SelectedItemValet=ValetType.FirstOrDefault(); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM