我想使用ValidationRules来验证一些ListBox控件是否至少选择了一项。
我试着这样做:
<ListBox ItemsSource="{Binding Path=AvailableItems}"
Behaviors:MultiSelectorBehaviours.SynchronizedSelectedItems="{Binding ChosenItems}"
x:Name="ListBoxItems">
<ListBox.Tag>
<Binding ElementName="ListBoxItems" Path="SelectedItem">
<Binding.ValidationRules>
<ValidationRules:NotNullValidationRule />
</Binding.ValidationRules>
</Binding>
</ListBox.Tag>
</ListBox>但是我的NotNullValidationRule从来没有被调用过。请注意,SynchronizedSelectedItems是一个特殊的附加属性,我使用它将SelectedItems同步到一个自定义集合(described here)。这就是为什么我对应用于Tag的“假”Binding进行验证的原因。
有没有办法验证ListBox.SelectedItems
发布于 2009-04-26 17:11:18
仅在TwoWay和OneWayToSource模式绑定中执行验证。如果您改变绑定,以TwoWay或OneWayToSource模式将SelectedItem绑定到标签,则会触发验证。
验证是为了保护目标属性。因此,当您设置标记时,验证将确保标记有效,并且可以使用新值设置SelectedItem。以下代码可以工作(SelectedItem自动绑定TwoWay IIRC。)
<ListBox x:Name="list">
<ListBox.SelectedItem>
<Binding ElementName="list" Path="Tag">
<Binding.ValidationRules>
<local:SelectedValidationRule />
</Binding.ValidationRules>
</Binding>
</ListBox.SelectedItem>
</ListBox>https://stackoverflow.com/questions/791172
复制相似问题