组合框文本提供虚假信息
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;
我添加了一个新的 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;