簡體   English   中英

在不設置名稱(WPF)的情況下將默認值顯示到ComboBox中

[英]Display default value into ComboBox without set NAME (WPF)

我有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顯示默認/第一項:

在此處輸入圖片說明

without設置ComboBox名稱就可以解決它。

在視圖模型中定義一個string源屬性,並將ComboBoxSelectedItem屬性綁定到此模型:

<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));
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM