繁体   English   中英

WPF ComboBox BorderBrush 不会改变

[英]WPF ComboBox BorderBrush won't change

我正在为数据库连接构建登录屏幕。 现在,我正在对表单进行数据验证,并希望在验证失败的字段上设置红色边框。 这在 TextBox 和 PasswordBox 上非常有效,但我无法在 ComboBox 上使用它。

我环顾了不同的线程,发现有人以我尝试过的方式工作,但无论出于何种原因,它都不适用于我的设置。

我现在如何设置边界:
(注释掉是我试图查看是否可以获得任何结果的另一种方法。)

private void activateValidationErrorHighlight(Control uiElelment)
{
    uiElelment.SetValue(Border.BorderBrushProperty, new SolidColorBrush(Color.FromArgb(0xFF, 0xD0, 0x50, 0x50)));

    //uiElelment.BorderBrush = new SolidColorBrush(Color.FromArgb(0xFF, 0xD0, 0x50, 0x50));
}

我也试过像这样直接编辑它myComboBox.BorderBrush = Brushes.Red;

组合框的 XAML:

<ComboBox Name="cb_DevelopmentServer" Text="Server"
                Grid.Column="0" Grid.Row="4" 
                Margin="5" Padding="5" 
                FontSize="16"
                IsEditable="True">
    <ComboBox.ItemsSource>
        <CompositeCollection>
            <CollectionContainer Collection="{Binding Path=ComboTest}" />
        </CompositeCollection>
    </ComboBox.ItemsSource>
</ComboBox>

在运行时查看 LiveVisualTree,我发现在元素本身中设置了一个 BorderBrush 属性,但在 ComboBox 中有一个未设置的 Border 元素。

如果可能的话,我想这样做而不必绕过 VisualTreeHelper。

我对 WPF 和 XAML 比较陌生,所以我不会对发现应用程序中其他地方存在导致此问题的问题感到非常惊讶。 如果你认为这是可能的,你能告诉我我应该去哪里看吗?

不幸的是,没有人就此回复我,我一直无法解决问题。

这是我为遇到同样问题的人所做的:

作为一种解决方法,我将 Xaml 中所有元素的边框去掉(将厚度设置为 0),并添加一个带有我知道的名称的<border>标记,用于我需要突出显示以进行验证的任何内容。

我所要做的就是将边框元素传递到原始帖子中定义的函数 activateValidationErrorHighlight 中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM