数据绑定时wpf默认的comboBox项

时间:2013-05-16 16:00:56

标签: c# wpf data-binding combobox

我正在关注教程Binding a comboBox to an Enum 并推出了这个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”

但那不起作用..

1 个答案:

答案 0 :(得分:3)

我从教程中下载了代码并发现缺少某些内容。在MainViewModel中,INotifyPropertyChanged已正确实施,但SelectedVolumeLevel属性未调用RaisePropertyChanged()上的set方法。这意味着当您更新组合框时,源不会更新。您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"); }
}

现在每次更改组合框中的选定项目时,源都会正确更新。这也应该解决您的默认选择问题。