Combobox文本提供虚假信息

时间:2016-05-04 05:13:08

标签: c# wpf combobox mahapps.metro

我为主题更改添加了一个新的ComboBox。当我选择项目时效果很好,选择会更改,但是当我从该ComboBox获取文本时,它会在ComboBox中返回另一个项目文本。我不知道是什么问题,我注意到这一点,通过添加调试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"/>

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

Themecb.Text替换为Themecb.SelectedValue

答案 2 :(得分:0)

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
            }