首页 > 解决方案 > 处理 wpf ComboBox ItemsSource 在选择时更改

问题描述

我有一个 wpf 用户界面,在其中我使用 ComboBox 将属性设置为一个值。ComboBox 的 ItemsSource 具有与允许值列表的绑定。我已经这样做了,因此该列表是允许值的列表,但当前选择的值已从中删除。这样,列表只包含一个可以实际更改的值。当列表为空时,我有一个触发器使组合框处于非活动状态。

就预期行为而言,这一切都运作良好。但是在视觉上我有多个红色边框显示验证错误,因为 selectedvalue 在更新时不再位于 itemssource 列表中。当我在更新时没有从 ItemsSource 中删除当前 SelectedValue 时,没有红色边框。

有没有办法解决这个问题,也许我可以使用另一个控件,或者可能以某种方式验证另一个列表(包含当前值)中的 SelectedValue 与 ItemsSource 中的相比?

标签: c#wpfcombobox

解决方案


您实际上无法选择不在ItemsSource. 您可以做的是通过将Validation.ErrorTemplate附加属性设置为空来删除出现验证错误时显示的红色边框ControlTemplate

<ComboBox ...>
    <Validation.ErrorTemplate>
        <ControlTemplate/>
    </Validation.ErrorTemplate>
</ComboBox>

推荐阅读