我正在寻找一种方法,可以在选择组合框中的项目时启用控件。当用户从组合框中选择一个项目然后启用另一个控件时,是否有一种简单的数据绑定方式?
答案 0 :(得分:1)
如果您正在使用MVVM,则可以将组合框的SelectedItem
绑定到视图模型中的属性。
说这是你的组合框:
<ComboBox ItemsSource="{Binding widgetlist}" SelectedItem="{Binding Path=selectedwidget, Mode=TwoWay}"></ComboBox>
这是你的控制:
<DockPanel IsEnabled="{Binding controlenabled}">
...
</DockPanel>
然后在selectedwidget
的setter中,您可以将controlenabled
属性更改为False或True。不要忘记通知controlenabled
属性已更改(或者如果需要,请使controlenabled
成为DependencyProperty。)
总之,您有3个要绑定的属性:
widgetlist
,一个ObservableCollection或其他一些作为你的组合框来源的集合
selectedwidget
,该集合类型的项目更改为当前所选的组合框
controlenabled
,bool
,其他控件会查看是否启用/禁用它们。与MVVM中的许多示例一样,这种方式可能需要在开始时稍微考虑更多的思想和代码,但以后会更加可维护和可扩展。例如,假设您希望更多控件也可以根据相同的方案启用/禁用自身。一块蛋糕:向他们添加IsEnabled="{Binding controlenabled}">
。
答案 1 :(得分:0)
是。您希望绑定到要动态启用或禁用的目标控件中的IsEnabled,并使用Value Converter将匹配的字符串或项目从ComboBox转换为真值以便启用。