2016-04-22 189 views
1

所以我試圖改變ComboBox的邊框顏色AFTER用戶選擇了一個Item。 (從紅到綠/灰/ AnyOtherColor)SelectionChanged事件在選擇之前觸發

問題:德恩我運行代碼,事件似乎火之前用戶已經做出選擇。

我的組合框是在多個網格內,並使用ResourceDictionary進行樣式設置(我將在一秒內顯示代碼)。

我在缺乏更好的知識的情況下研究了SelectionChanged事件。

XAML組合框:

<ComboBox Grid.Column="1" 
        Grid.Row="1" 
        Style="{StaticResource FormComboBox}" 
        x:Name="comboAnrede" 
        SelectionChanged="ComboBox_SelectionChanged" > 
      <ComboBoxItem Content="Keine Angabe" 
          IsSelected="True"/> 
      <ComboBoxItem Content="Dr." /> 
      <ComboBoxItem Content="Prof." /> 
      <ComboBoxItem Content="Prof. Dr." /> 
      <ComboBoxItem Content="Mag." /> 
      <ComboBoxItem Content="Ing." /> 
      <ComboBoxItem Content="Ba." /> 
     </ComboBox> 

代碼隱藏

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     comboAnrede.BorderBrush = new SolidColorBrush(new Color { R = 204, G = 204, B = 204, A = byte.MaxValue }); 
    } 

資源詞典

<Style TargetType="ComboBox" x:Key="FormComboBox"> 
    <Setter Property="Margin" Value="10,0" /> 
    <Setter Property="HorizontalAlignment" Value="Stretch" /> 
    <Setter Property="VerticalAlignment" Value="Center" /> 
    <Setter Property="BorderBrush" Value="Red" /> 
    <Setter Property="BorderThickness" Value="0,0,0,1" /> 
</Style> 

不任何人都知道我可以如何等待實際選擇? (如果可能,你是否可以嘗試向我解釋是否以及何時可以重複使用與其他組合框相同的事件?)

回答

1

當組合框初始加載時,沒有選擇項目。然後根據IsSelected屬性將所選項目設置爲「Keine Angabe」。這會導致選擇更改事件觸發。如果你刪除它,你會看到事件沒有被解僱。

您可以通過鑄造發送到ComboBox類型再使用其他組合框的方法:見下文:

private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) 
     { 
      var combobox = sender as ComboBox; 
      combobox.BorderBrush = new SolidColorBrush(new Color { R = 204, G = 204, B = 204, A = byte.MaxValue }); 
     } 
相關問題