组合框文本提供虚假信息

Combobox text is giving fake info

我添加了一个新的 ComboBox 用于主题更改。当我 select 项目工作正常时,selection 被更改,但是当我从那个 ComboBox 中获取文本时,它 returns ComboBox 中的另一个项目文本。我不知道有什么问题,当我更改 selection.

时,我通过在事件中添加调试 TextBox 并在 ComboBox 中打印文本注意到了这一点

代码如下:

private void Themecb_SelectionChanged(object sender, SelectionChangedEventArgs e)
        {
            if (themeedit == 1)
            {
                String txt = Themecb.Text;
                TextBox1.Text = "THEME WORK " + txt;
                Tuple<AppTheme, Accent> appStyle = ThemeManager.DetectAppStyle(Application.Current);
                ThemeManager.ChangeAppStyle(Application.Current,
                                            ThemeManager.GetAccent(txt),
                                            ThemeManager.GetAppTheme("BaseLight")); // or appStyle.Item1
            }
        }

这是 XML 文件:

<ComboBox x:Name="Themecb" 
HorizontalAlignment="Left" 
Margin="237,227,0,0" 
VerticalAlignment="Top" 
Width="120" 
SelectionChanged="Themecb_SelectionChanged"/>

Themecb.Text 替换为 Themecb.SelectedValue

ComboBox 有两个主要属性 SelectedText 和 SelectedValue

SelectedText为选中项的字符串文本 SelectedValue 是用于标识后端中每个项目的值

所以在你的情况下尝试如下

if (themeedit == 1)
            {
                String txt = Themecb.SelectedText;
                TextBox1.Text = "THEME WORK " + txt;
                Tuple<AppTheme, Accent> appStyle = ThemeManager.DetectAppStyle(Application.Current);
                ThemeManager.ChangeAppStyle(Application.Current,
                                            ThemeManager.GetAccent(txt),
                                            ThemeManager.GetAppTheme("BaseLight")); // or appStyle.Item1
            }

您是否尝试通过 SelectedItem 属性 获取值?尝试将行 String txt = Themecb.Text; 替换为 String txt = Themecb.SelectedItem as string;