使用MVVM新建/学习WPF。我想在ComboBox
链接时尝试Label
显示默认值:
<StackPanel ...>
<ComboBox Name="cboMonth"
ItemsSource="{Binding MonthsList, Mode=OneWay}"
DisplayMemberPath="month"
SelectedIndex="{Binding DisplayCurrentIntMonth, Mode=Default}"
SelectedItem="{Binding SelectedMonth, Mode=Default}" />
<Label Content="{Binding SelectedMonth.month}" />
</StackPanel>
MonthList
属于Month
类型(填充1月1日,2月2日,等等); Month
具有单个属性string month
。
DisplayCurrentIntMonth
会返回int
:
public int DisplayCurrentIntMonth
{
get
{
DateTime today = DateTime.Today;
return selectedIntMonth = today.Month - 1;
}
set
{
if (selectedIntMonth != value)
{
RaisePropertyChanged("DisplayCurrentIntMonth");
}
}
}
SelectedMonth
返回Month
:
public Month SelectedMonth
{
get
{
return selectedMonth;
}
set
{
if (selectedMonth != value)
{
selectedMonth = value;
RaisePropertyChanged("SelectedMonth");
}
}
}
上面的代码不会显示默认值(在ComboBox
中)
SelectedIndex="{Binding DisplayCurrentIntMonth, Mode=Default}"
但是会显示一个默认值(并且完全按照需要运行),没有绑定:
SelectedIndex="5"
我看过this link(和许多其他人一样),但没有运气。花了几个小时谷歌搜索...
为什么应用首次渲染时ComboBox
默认值(应该是6月6日)不会填充?
在Pedro的帮助下,让ComboBox与Label同步,ComboBox显示所需的项目:
<StackPanel ...>
<ComboBox Name="cboMonth"
ItemsSource="{Binding MonthsList, Mode=TwoWay}"
DisplayMemberPath="month"
SelectedIndex="{Binding DisplayCurrentIntMonth, Mode=TwoWay}"
SelectedItem="{Binding SelectedMonth, Mode=Default}" />
<Label Content="{Binding SelectedItem.month, ElementName=cboMonth}"/>
</StackPanel>