我正在关注教程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"
但这不起作用..
最佳答案
我从教程中下载了代码,发现缺少一些东西。在 MainViewModel
中,INotifyPropertyChanged
已正确实现,但是 SelectedVolumeLevel
属性未调用 RaisePropertyChanged()
set
上的方法。这意味着当您更新组合框时,源不会更新。 SelectedIndex
不起作用的原因是 SelectedValue
已设置并绑定(bind)到源。要解决此问题,请向您的 MainViewModel
添加一个支持字段,如下所示:
private VolumeLevel selectedVolumeLevel = VolumeLevel.LowVolume; // Default is set to low
然后将 SelectedVolumeLevel
属性更改为:
public VolumeLevel SelectedVolumeLevel
{
get { return selectedVolumeLevel; }
set { selectedVolumeLevel = value; RaisePropertyChanged("SelectedVolumeLevel"); }
}
现在,每次组合框中选定的项目发生更改时,源都会正确更新。这也应该可以解决您的默认选择问题。
关于c# - 数据绑定(bind)时的 wpf 默认组合框项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16592294/