Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果组合框未更改WPF MVVM模式中的值,如何设置该值_C#_Wpf_Xaml_Mvvm_Combobox - Fatal编程技术网

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

C# 如果组合框未更改WPF MVVM模式中的值,如何设置该值,c#,wpf,xaml,mvvm,combobox,C#,Wpf,Xaml,Mvvm,Combobox,在我的WPF应用程序中,我有一个组合框。它通过MVVM设计模式绑定数据。它很好用 在XAML中 <ComboBox x:Name="comboBox1" ItemsSource="{Binding ValetType}" DisplayMemberPath="Name" SelectedItem="{Binding SelectedItemValet, Mode=TwoWay}" IsSynchronizedWithCurrentItem="True"/> 在

在我的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"); }
}
valetTypes=GetValueForValet();
公共可观测收集值类型
{
获取{return valetTypes;}
设置{valetTypes=value;NotifyPropertyChanged(“ValetType”);}
}
公共代客泊车选择代客泊车
{
获取{return selectedItemValet;}
设置{selectedItemValet=value;NotifyPropertyChanged(“selectedItemValet”);}
}

我面临的一个问题是,当我不更改组合框值时,它绑定null,否则它绑定null。我将IsSynchronizedWithCurrentItem设置为true,它告诉选择器应保持SelectedItem与当前项同步。但这是行不通的。我怎么能这样做?我是WPF MVVM的新手。

简单的解决方案是为您的
SelectedItemValet
提供一个默认值


在ViewModel的某些方法中,当您初始化ViewModel(通常是构造函数)时会调用该方法。您可以将
SelectedItemValet
设置为所需的值,简单的解决方案是为
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(); 

您的代码中有一个问题:

public ValetServices SelectedItemValet
{
    get { return selectedItemValet;}
    set { selectedItemValet = value; NotifyPropertyChanged("SelectedItemValet"); }
}
ValetType
是类型
Valet
,但
SelectedItemValet
是类型
ValetServices
。他们应该匹配。更改后,要选择第一个项目(例如),请执行以下操作:

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

如果您想在SelectedItemValet中设置默认值,您需要在ViewModel或XAML中设置默认值:在XAML中,将SelectedIndex设置为0,在cs中,将SelectedItemValet设置为ViewModel中的某项内容,加载
ValetType
后,执行类似于
的操作。SelectedItemValet=ValetType.FirstOrDefault()组合框不显示任何选定项如果您想在SelectedItemValet中设置默认值,需要在ViewModel或XAML中进行设置:在XAML中,将SelectedIndex设置为0,在cs中,在加载
ValettType
后,将SelectedItemValet设置为ViewModel中的某个内容,执行类似这样的操作。SelectedItemValet=ValetType.FirstOrDefault()组合框不显示任何选定的项目这是我的错误,它是Valet而不是ValetService,已更新。确定。如果在SelectedItemValet setter中放置断点,并在组合框中选择值,它是否命中断点@SanjeevSNo它不hitHmm..因此ValetType绑定它的ok但SelectedItem not..检查
SelectedItemValet
的拼写是否与您的xaml和viemodel完全相同。有时,一封简单的信就可以起作用。同时选中
selectedItemValet
private variable。在您显示的代码中,我们看不到定义。当我更改组合框值时,它会命中,如果我保存值而不更改它,则不会命中,并且值为0。这是我的错误,是Valet而不是ValetService,它已更新。好。如果您在SelectedItemValet setter中设置了一个断点,并在组合框中选择了一个值,它是否达到了断点@SanjeevSNo它不hitHmm..因此ValetType绑定它的ok但SelectedItem not..检查
SelectedItemValet
的拼写是否与您的xaml和viemodel完全相同。有时,一封简单的信就可以起作用。同时选中
selectedItemValet
private variable。在您显示的代码中,我们看不到定义。当我更改组合框值时,它会命中,如果我保存值而不更改,则不会命中,值为0