c# - 数据绑定(bind)时的 wpf 默认组合框项

标签 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"

但这不起作用..

最佳答案

我从教程中下载了代码,发现缺少一些东西。在 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/

相关文章:

c# - 如何在单击按钮时保持 boolean 值的状态?

wpf - 临时透明的 wpf 应用程序 - 用于工具提示的 Visual Studio Ctrl

java - 在 JAVA 中为 MySQL PreparedStatment 绑定(bind) NULL?

angular - 如何正确地将数据绑定(bind)到 Angular2 中的单选按钮?

wpf - Expression Blend 不允许选择解决方案配置/平台

c# - WPF 用户控件中的数据绑定(bind)

c# - UserControl 中的@OutputCache 问题

C# - 获取源代码文件正在使用或引用的类型列表

c# - 打开资源管理器窗口并等待它关闭

c# - MVVM UI 使用 WPF 控制用户依赖的可见性