1

我需要能够“冻结”列表框选择,直到我清除用户对项目的选择。
我似乎找不到任何例子,需要一个指向正确方向的小指针。
我在 MVVM 中,所以我可能想要触发 RelayCommand 并且仅在 SelectedIndex 为 -1 时启用它。

我该怎么做呢?

4

2 回答 2

2

您可以尝试使用 Enable 属性,例如:

<Listbox Enabled=False />

如果需要,您可以在代码中将此属性与另一个属性绑定。

Property IsListBoxEnable As Boolean
<Listbox Enabled="{Binding IsListBoxEnable, Mode=TwoWay}" />

在您的代码中,您只需修改 IsLisBoxEnable 的值。

于 2013-10-11T18:59:50.190 回答
2

一种方法是将 IsEnabled 数据绑定到 SelectedIndex,然后使用true仅在 SelectedIndex 为 -1时返回的转换器

<Listbox IsEnabled={Binding RelativeSource={RelativeSource Self}, 
                    Path=SelectedIndex, Converter=YourConverter} />

有关写作的更多信息,YourConverter请参阅此页面

在您的视图模型中,您可以拥有 SelectedIndex 的属性,然后将其设置为 -1,并且应该再次启用列表框


如果您不想完全禁用列表框,可以使用 datavalidation 在某些情况下显示错误消息,这里是一个很好的开始

于 2013-10-11T19:08:01.310 回答