WPF ComboBox BorderBrush不会改变

时间:2016-09-28 21:54:39

标签: c# wpf xaml combobox

我正在构建数据库连接的登录屏幕。现在,我正在对表单进行数据验证,并希望在未通过验证的字段上设置红色边框。这完全适用于TextBoxes和PasswordBoxes,但我无法在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;

ComboBox的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的新手,所以我不会惊讶地发现应用程序中的其他地方存在导致此问题的问题。如果你认为这是可能的,你能告诉我我的样子吗?

1 个答案:

答案 0 :(得分:2)

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

以下是我为遇到同样问题的人所做的事情:

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

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