WPF 数据绑定时ComboBox默认项

5

我正在按照教程将comboBox绑定到枚举,并得到了以下XML代码:

    <ComboBox 
        DisplayMemberPath="Key"
        SelectedValuePath="Value"
        ItemsSource="{Binding VolumeLevelList}"
        SelectedValue="{Binding SelectedVolumeLevel, ValidatesOnDataErrors=True, Mode=TwoWay}"
        Height="23" HorizontalAlignment="Left" Margin="189,70,0,0" 
        VerticalAlignment="Top" Width="120" />

我正在寻找一种选择默认选项的方法,类似于

SelectedIndex="0"

但是这并不起作用。


你是如何将索引确切地设置为0的?在代码后台吗? - Arian Motamedi
@programmer93 不,只是在comboBox的XML属性中。 - drtf
1个回答

3

我从教程中下载了代码,发现有些东西缺失。在MainViewModel中,INotifyPropertyChanged已经正确实现,但是SelectedVolumeLevel属性没有在set时调用RaisePropertyChanged()方法。这意味着当你更新组合框时,源不会被更新。你的SelectedIndex不起作用的原因是SelectedValue已经设置并绑定到源上了。为了解决这个问题,在MainViewModel中添加一个后备字段,像这样:

private VolumeLevel selectedVolumeLevel = VolumeLevel.LowVolume; // Default is set to low

然后将SelectedVolumeLevel属性更改为以下内容:

public VolumeLevel SelectedVolumeLevel
{
    get { return selectedVolumeLevel; }
    set { selectedVolumeLevel = value; RaisePropertyChanged("SelectedVolumeLevel"); }
}

现在每次下拉框中选定的项目发生变化时,源会得到正确的更新。这也应该解决您的默认选择问题。

1
非常抱歉未完成的代码。示例项目已更新,以供将来访问该网站的任何人使用。 - Jacob Saylor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接