首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你能在ListBox.SelectedItems上使用ValidationRules吗?

你能在ListBox.SelectedItems上使用ValidationRules吗?
EN

Stack Overflow用户
提问于 2009-04-26 16:48:21
回答 1查看 2K关注 0票数 1

我想使用ValidationRules来验证一些ListBox控件是否至少选择了一项。

我试着这样做:

代码语言:javascript
复制
<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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2009-04-26 17:11:18

仅在TwoWay和OneWayToSource模式绑定中执行验证。如果您改变绑定,以TwoWay或OneWayToSource模式将SelectedItem绑定到标签,则会触发验证。

验证是为了保护目标属性。因此,当您设置标记时,验证将确保标记有效,并且可以使用新值设置SelectedItem。以下代码可以工作(SelectedItem自动绑定TwoWay IIRC。)

代码语言:javascript
复制
<ListBox x:Name="list">
    <ListBox.SelectedItem>
        <Binding ElementName="list" Path="Tag">
            <Binding.ValidationRules>
                <local:SelectedValidationRule />
            </Binding.ValidationRules>
        </Binding>
    </ListBox.SelectedItem> 
</ListBox>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/791172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档