当前位置: 首页 > 知识库问答 >
问题:

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

楚志强
2023-03-14

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

在XAML中

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

在视图模型中

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,它告诉选择器应该保持SelectedItem与当前项同步。但不会起作用。我怎么能这么做?我是WPF MVVM的新手。

共有2个答案

易炳
2023-03-14

最简单的解决方案是为您的< code>SelectedItemValet提供一个默认值。

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

东方和煦
2023-03-14

您的代码中有一个问题:

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

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

valetTypes = GetValueForValet();
this.SelectedItemValet=ValetType.FirstOrDefault(); 
 类似资料:
  • 我在一个表单中有两个组合框。 当combobox 2中的列表更新时,我希望combobox 1中选定的值发生变化。 例如:ComboBox1 包含移动公司的名称,ComboBox2 包含该公司所有移动电话的列表。

  • 我是C#的新手,我正在通过不连接到外部数据库的编码来制作一个简单的表。我有一个组合框(下拉列表),这样用户可以从下拉列表项中选择列的数据类型,然后将所选项设置为列的数据。我需要此行中的选定项目: 这是我的全班同学:

  • 我正在尝试设置组合框的文本颜色。 我尝试的代码

  • 我正在尝试使用Selenium在组合框中设置一个值。但是find_element_by_xpath语句无法按类或ng-model找到组合框(详细来说,我试图将股票的时间段从一天改为一周) web页面包含我正在搜索的元素的以下javascript 我还尝试了使用driver.find_element_by_xpath(“//select[@ng-model='analysisgraph.period

  • 问题内容: 在对话框中,如果选中了某个组合,则需要显示一组控件,否则显示另一组控件。即我需要2层,并且当组合被选中/未选中时,我需要在它们之间切换。我怎样才能做到这一点? 问题答案: CardLayout 为此,如下所示。

  • 假设我在功能组件中创建了一个变量,如下所示: 如何根据用户输入的内容更改此值。我的想法是: 但是它不知道什么是值,我怎么能得到值到我的quizName变量?