数据绑定时wpf默认的comboBox项

drt*_*rtf 5 c# data-binding wpf combobox

我正在按照教程将一个comboBox绑定到一个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" />
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种方法来选择默认选择,例如

的SelectedIndex = "0"

但那不起作用..

Ari*_*edi 3

我从教程中下载了代码,发现缺少一些东西。在 中MainViewModelINotifyPropertyChanged已正确实现,但是该SelectedVolumeLevel属性不会调用RaisePropertyChanged()上的方法set。这意味着当您更新组合框时,源不会更新。SelectedIndex您不起作用的原因是因为它SelectedValue已经设置并绑定到源。要解决此问题,请向您添加一个支持字段,MainViewModel如下所示:

private VolumeLevel selectedVolumeLevel = VolumeLevel.LowVolume; // Default is set to low
Run Code Online (Sandbox Code Playgroud)

然后将SelectedVolumeLevel属性更改为:

public VolumeLevel SelectedVolumeLevel
{
    get { return selectedVolumeLevel; }
    set { selectedVolumeLevel = value; RaisePropertyChanged("SelectedVolumeLevel"); }
}
Run Code Online (Sandbox Code Playgroud)

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