我正在构建数据库连接的登录屏幕。现在,我正在表单上进行数据验证,并希望在验证失败的字段上设置红色边框。这在文本框和密码框上完美运行,但我无法让它在组合框上运行。
我查看了不同的线程,发现有人按照我尝试过的方式使其工作,但无论出于何种原因,它在我的设置中不起作用。
我现在如何设置边框:
(注释掉的是我试图查看是否可以获得任何结果的另一种方法。)
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/