我需要能够“冻结”列表框选择,直到我清除用户对某个项目的选择。
我似乎找不到任何例子,需要在正确的方向上指点一点
我在MVVM中,所以我可能想要触发一个RelayCommand,并且只在SelectedIndex为-1时启用它。
我该怎么做?
答案 0 :(得分:2)
您可以尝试使用Enable propety,如:
<Listbox Enabled=False />
如果您愿意,可以在代码中使用其他属性绑定此属性。
Property IsListBoxEnable As Boolean
<Listbox Enabled="{Binding IsListBoxEnable, Mode=TwoWay}" />
在您的代码中,您只需修改IsLisBoxEnable的值。
答案 1 :(得分:2)
这样做的一种方法是将IsEnabled数据绑定到SelectedIndex,然后只有当SelectedIndex为-1时才有一个返回true
的转换器
<Listbox IsEnabled={Binding RelativeSource={RelativeSource Self},
Path=SelectedIndex, Converter=YourConverter} />
有关撰写YourConverter
的详细信息,请参阅this page
在viewmodel中,您可以拥有SelectedIndex的属性,然后将其设置为-1,并且应该再次启用列表框
如果您不想完全禁用列表框,可以使用datavalidation在某些条件下显示错误消息here is a good place to get started