Csharp/C#教程:在WPF MVVM应用程序中的ComboBox中设置默认选定项分享


在WPF MVVM应用程序中的ComboBox中设置默认选定项

几个小时我一直坚持这个问题……我想做的事实上很简单 – 在ComboBox中设置一个默认的选定项目(我使用的是MVVM模式)。

我在视图中为ComboBox提供了以下XAML:

 

在我的ViewModel中,我有一个ObservableCollection,Schools:

  public ObservableCollection Schools { get; private set; } public CourseFormViewModel() { Schools = new ObservableCollection(); try { // Gets schools from a web service and adds them to the Schools ObservableCollection PopulateSchools(); } catch (Exception ex) { // ... } } public int SelectedSchool { get { return schoolId; } set { schoolId = value; OnPropertyChanged("SelectedSchool"); } } 

最后,School是一个简单的业务对象:

 [DataContract] public class School { [DataMember] public int Id { get; set; } [DataMember] public string Acronym { get; set; } [DataMember] public string Name { get; set; } } 

问题是,当应用程序启动时,combobox不会获得默认值。 我已经尝试在XAML中将SelectedIndex设置为0,但无济于事。 我已经尝试在代码隐藏(可以工作)中的Window_Loaded事件处理程序中设置SelectedIndex,但是因为我正在使用感觉有点脏的MVVM模式。 我仍然是这个WPF / MVVM的新手,所以如果有人能指出我正确的方向,我将不胜感激。

您可以像这样设置SelectedSchool:

 public void CourseFormViewModel() { Schools = new ObservableCollection(); try { // Gets schools from a web service and adds them to the Schools ObservableCollection PopulateSchools(); SelectedSchool = 3; } catch (Exception ex) { // ... } } 

测试数据:

  Schools.Add(new School { Id = 1, Name = "aaa", Acronym = "a" }); Schools.Add(new School { Id = 2, Name = "bbb", Acronym = "b" }); Schools.Add(new School { Id = 3, Name = "ccc", Acronym = "c" }); 

并且您将获得所选项目“c”。

如果你想使用最小的Id的init ComboBox,你可以使用这个代码:

 SelectedSchool = Schools.Min(x => x.Id); 

而不是分配常量值。

上述就是C#学习教程:在WPF MVVM应用程序中的ComboBox中设置默认选定项分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!

本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

ctvol管理联系方式QQ:251552304

本文章地址:https://www.ctvol.com/cdevelopment/984521.html

(0)
上一篇 2021年12月20日
下一篇 2021年12月20日

精彩推荐