2016-09-28 89 views
1

我正在构建数据库连接的登录屏幕。现在,我正在对表单进行数据验证,并且希望在验证失败的字段上设置红色边框。这适用于TextBoxes和PasswordBoxes,但我无法使它在ComboBox上工作。WPF组合框BorderBrush不会更改

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

如何我设置的边界现在:
(注释掉是另一种方法,我是想看看我是否能得到任何结果。)

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:

<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> 

运行t 1中以一看LiveVisualTree我发现在元素本身中有一个BorderBrush属性被设置,但是在ComboBox中没有设置Border元素。

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

我对WPF和XAML比较陌生,所以我不会太惊讶地发现在应用程序中有一个问题导致了这个问题。如果你认为这是可能的,你能否告诉我我可能在哪里看?

回答

2

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

这里是我做了同样的问题的人:

作为一种变通方法,我起飞的所有元素的边界就在XAML(可设置厚度为0),并增加了<border>标签有一个名字我知道任何我需要强调的验证。

我只需将边界元素传递给原始帖子中定义的activateValidationErrorHighlight函数。