我为主题更改添加了一个新的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"/>
答案 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
}