与SelectedItem一起使用时,SelectedIndex在ComboBox中不显示默认值

时间:2015-06-23 23:06:09

标签: wpf mvvm

使用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>

0 个答案:

没有答案