首页 > 解决方案 > WPF-combobox selection changed 显示最后选择的项目而不是当前项目

问题描述

这是我的组合框(xaml 代码):

 <ComboBox SelectionChanged="ComboBox1_SelectionChanged" Name="ComboBox1" SelectedIndex="1" FontWeight="Bold" FontSize="15" Canvas.Left="133" Canvas.Top="240" Width="135" Height="24">
        <ComboBoxItem Foreground="Red" Name="Red">Red</ComboBoxItem>
        <ComboBoxItem Foreground="Blue" Name="Blue">Blue</ComboBoxItem>
        <ComboBoxItem Foreground="Yellow" Name="Yellow">Yellow</ComboBoxItem>
        <ComboBoxItem Foreground="Pink" Name="Pink">Pink</ComboBoxItem>
        <ComboBoxItem Foreground="Green" Name="Green">Green</ComboBoxItem>
    </ComboBox>

这是我的 C# 代码:

private void ComboBox1_SelectionChanged(object sender, SelectionChangedEventArgs e)
    {
        if (ComboBox1.Text != "")
        {
            var converter = new System.Windows.Media.BrushConverter();
            var brush = (Brush)converter.ConvertFromString(ComboBox1.Text);
            rect.Fill = brush;
        }
    }

我有一个矩形,我想填充组合框中选择的颜色,我还希望组合框上的默认颜色为蓝色,但这两种颜色都不适合我。组合框上的文本默认情况下实际上是蓝色的,但我认为项目本身没有被选中,因为它无法识别它并告诉我我的组合框字符串默认为空。此外,我的矩形的颜色会延迟变化,如果我首先选择红色 - 什么都不会发生,然后如果我选择绿色第二个它会显示红色并且它会一直延迟。

有谁知道为什么?以及如何解决?我将不胜感激。

标签: c#wpfxamlcomboboxselectionchanged

解决方案


最后,我设法通过使用 DropDownClosed 事件更改 SelectionChanged 事件来解决这个问题。


推荐阅读