c# - WPF ComboBox BorderBrush 不会改变

标签 c# wpf xaml 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 中。

关于c# - WPF ComboBox BorderBrush 不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39758302/

相关文章:

c# - 获取数组中的最后一个 child

c# - 由于访问修饰符,子控件无法访问

wpf - 通过 XAML 向 DataGrid 添加行

c# - Asp.net Mvc 区域路由问题

c# - 可选属性默认值的 XML 序列化

wpf - 在渲染时间和性能方面,面板以什么顺序最有效?

wpf - 在 WPF 中显示大文本的最佳方式?

c# - 我应该如何在文件事件触发器后面的 C# 代码中引用自定义控件?

c# - WPF缩放 Canvas 在鼠标位置上居中

c# - Web API 根元素