簡體   English   中英

SelectionChanged 事件在進行選擇之前觸發

[英]SelectionChanged Event fires before Selection is made

所以我試圖在用戶選擇一個項目更改 ComboBox 的邊框顏色。 (從紅色到綠色/灰色/任何其他顏色)

問題: Wenn 我運行代碼,事件似乎在用戶做出選擇之前觸發。

我的 ComboBox 位於多個網格中,並使用 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>

有誰知道我如何讓它等待實際選擇? (如果可能的話,您能否嘗試向我解釋我是否以及何時可以為其他 ComboBox 重用相同的事件?)

當組合框最初加載時,沒有選擇任何項目。 然后根據 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 });
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM