将动态创建的组合框绑定到viewmodel上的属性

时间:2013-09-26 10:54:55

标签: c# wpf mvvm binding combobox

我希望将在运行时创建的ComboBox绑定到ViewModel上的属性。

我在这些方面尝试了一些东西

combobox.SetBinding(ComboBox.SelectedValueProperty,
    new Binding("WCSettings.ViewModels.WinCAPSIniViewModel.selectedItem")
    {
        Source = combobox.SelectedValue,
        Mode = BindingMode.OneWayToSource
    });

绑定只需要单向(View - > ViewModel),因此值可以存储在数据库中。 'combobox'是正在创建的ComboBox的实例。

1 个答案:

答案 0 :(得分:1)

绑定ComboBox的SelectedValue属性,同时将绑定的Source设置为相同的属性是没有意义的。

您需要拥有视图模型的实例并将其用作绑定源。除非您还设置了ComboBox的SelectedValuePath属性,否则应绑定SelectedItem属性。

WCSettings.ViewModels.WinCAPSIniViewModel viewModel = ...

combobox.SetBinding(ComboBox.SelectedItemProperty,
    new Binding("selectedItem")
    {
        Source = viewModel ,
        Mode = BindingMode.OneWayToSource
    });

为了防止您忘记,selectedItem需要成为WinCAPSIniViewModel类中的公共属性。