C# SelectionChanged事件在进行选择之前激发

C# SelectionChanged事件在进行选择之前激发,c#,xaml,combobox,C#,Xaml,Combobox,因此,我试图在用户选择一个项目后更改组合框的边框颜色。(从红色到绿色/灰色/任何其他颜色) 问题:我运行代码时,事件似乎在用户做出选择之前触发 我的组合框位于多个网格中,并使用ResourceDictionary设置样式(稍后我将显示代码) 由于缺乏更好的知识,我参加了一个SelectionChanged活动 XAML组合框: <ComboBox Grid.Column="1" Grid.Row="1" Style="

因此,我试图在用户选择一个项目后更改组合框的边框颜色。(从红色到绿色/灰色/任何其他颜色)

问题:我运行代码时,事件似乎在用户做出选择之前触发

我的组合框位于多个网格中,并使用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>
资源字典

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

有人知道我如何让它等待实际的选择吗?
(如果可能的话,您能否尝试向我解释一下,如果以及何时我可以将同一事件重新用于其他组合框?

当组合框最初加载时,没有选择任何项目。然后根据IsSelected属性将所选项目设置为“Keine Angabe”。这将导致选择更改事件触发。如果删除它,您将看到事件未被激发

通过将发送方强制转换为组合框类型,可以对其他组合框重复使用该方法:请参见下文:

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 });
        }
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 });
        }