2016-09-28 17 views
1

私はデータベース接続用のサインイン画面を作成しています。今、私はフォーム上でデータ検証を行い、検証に失敗したフィールドに赤い枠線を設定したいと考えています。これはTextBoxesとPasswordBoxesで完全に動作しますが、コンボボックスで動作するようにはできません。WPF ComboBox 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:

実行-TI中LiveVisualTreeを見てみると
<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> 

私は、BorderBrushプロパティが要素自体に設定されていることがわかりましたが、ComboBox内にBorder要素が設定されていません。

可能であれば、私はVisualTreeHelperを登ることなくこれをしたいと思います。

私はWPFとXAMLの新機能ですので、アプリのどこかに問題があることに驚くことはありません。あなたがそれが可能だと思うなら、私がどこで見えるかも知っていますか?

答えて

2

残念ながら、私はこのことについて誰も私に戻ってこなかったので、問題を解決できませんでした。ここで

は、私は同じ問題を持つ人のためにやったことです:

回避策として、私は(0に厚さを設定する)XAMLの右のすべての要素の外枠を取って、そして<border>タグを追加しています私が検証のために強調する必要があるものの周りに知っている名前で。

私がしなければならなかったのは、元の投稿に定義されたactivateValidationErrorHighlight関数にborder要素を渡すことでした。

関連する問題