在没有设置NAME(WPF)的情况下将默认值显示在ComboBox中

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在没有设置NAME(WPF)的情况下将默认值显示在ComboBox中相关的知识,希望对你有一定的参考价值。

我有ComboBox

<ComboBox ItemsSource="{Binding Path=MonthDaysList}" IsSynchronizedWithCurrentItem="True"/>

以下是生成MonthDaysList数据的方法:

public ObservableCollection<string> MonthDaysList { get; internal set; }
public void GetMonths() {
   MonthDaysList = new ObservableCollection<string>();
   foreach (var item in MyConceptItems) {
            MonthDaysList.Add(item.DateColumn);
   }}

ObservableCollection和Binding工作正常,但它没有在ComobBox中显示默认/第一项:

enter image description here

有可能解决它without设置ComboBox的名字?

答案

在视图模型中定义string源属性,并将SelectedItemComboBox属性绑定到此属性:

<ComboBox ItemsSource="{Binding Path=MonthDaysList}" SelectedItem="{Binding SelectedMonthDay}"/>

如果要动态设置source属性,请确保实现INotifyPropertyChanged接口:

public class ViewModel : INotifyPropertyChanged
{
    private ObservableCollection<string> _monthDaysList;
    public ObservableCollection<string> MonthDaysList
    {
        get { return _monthDaysList; }
        internal set { _monthDaysList = value; OnPropertyChanged(); }
    }


    private string _selectedMonthDay;
    public string SelectedMonthDay
    {
        get { return _selectedMonthDay; }
        internal set { _selectedMonthDay = value; OnPropertyChanged(); }
    }

    public void GetMonths()
    {
        MonthDaysList = new ObservableCollection<string>();
        if (MyConceptItems != null && MyConceptItems.Any())
        {
            foreach (var item in MyConceptItems)
            {
                MonthDaysList.Add(item.DateColumn);
            }
            SelectedMonthDay = MonthDaysList[0];
        }
    }

    public event PropertyChangedEventHandler PropertyChanged;
    protected void OnPropertyChanged([CallerMemberName] String propertyName = "")
    {
        if (PropertyChanged != null)
            PropertyChanged.Invoke(this, new PropertyChangedEventArgs(propertyName));
    }
}

以上是关于在没有设置NAME(WPF)的情况下将默认值显示在ComboBox中的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有动画的情况下将 UISearchController 设置为活动?

如何在没有登录表单的情况下将摘要身份验证与 asp.net web api 和 angular js 一起使用?

java-int类型:int默认为0导致更新操作未赋值的情况下将值更新为0

WPF 工具包 DatePicker 更改默认值“显示日历”

WPF 绑定 - 空字符串的默认值

我可以在不使用 winformshost 的情况下将 Lync SDK 对话停靠在 WPF 上吗?