【发布时间】:2017-01-30 08:53:55
【问题描述】:
我对 C# 和 WPF 项目有点陌生。所以这是我的问题。
我有 2 个 Combobox 填充了字符串列表。
根据我的第一个组合框的值,我想改变 第二个组合框中的可用列表。
这是我的代码:
public partial class MainWindow : Window
{
//creation de listes
List<string> themesE17 = new List<string>();
List<string> themesH17 = new List<string>();
List<string> themesE16 = new List<string>();
List<string> themesH16 = new List<string>();
public MainWindow()
{
InitializeComponent();
initLists();
string value = comboSaison.Text;
Console.WriteLine("The value of season combobox " + value);
}
public void initLists()
{
//saison 2017
themesE17.Add("Ete 17 Theme1");
themesE17.Add("Ete 17 Theme2");
themesH17.Add("Hiver 17 Theme1");
themesH17.Add("Hiver 17 Theme2");
//saison 2016
themesE16.Add("Ete 16 Theme1");
themesE16.Add("Ete 16 Theme2");
themesH16.Add("Hiver 16 Theme1");
themesH16.Add("Hiver 16 Theme2");
}
private void comboSaison_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
if (comboSaison.Text == "Ete 2017")
{
comboTheme.ItemsSource = themesE17;
Console.WriteLine("1st if E17");
}
else if (comboSaison.Text == "Hiver 2017")
{
comboTheme.ItemsSource = themesH17;
Console.WriteLine("2nd if H17");
}
else if (comboSaison.Text == "Ete 2016")
{
comboTheme.ItemsSource = themesE16;
Console.WriteLine("3rd if E16");
}
else if (comboSaison.Text == "Hiver 2016")
{
comboTheme.ItemsSource = themesH16;
Console.WriteLine("4th if H16");
} else
Console.WriteLine("Error in selection !");
}
}
但它不起作用,我的Console.WriteLine 告诉我,当我在第一个组合框中选择我的值时,如果情况以随机方式出现,程序就会运行。
我们将不胜感激,谢谢!
【问题讨论】:
-
当您更改选择时,comboSaison 选择的项目是什么?尝试使用 comboSaison.SelectedItem 并找出答案。
-
它是“Ete 2017”作为选定值,所以它应该是名为comboTheme @PeterB的组合框中的themesE17列表
-
使用数据绑定我认为更可靠的选择是绑定到 xaml 中的可观察字符串集合,然后更新该集合的内容而不是绑定。
标签: c# wpf data-binding combobox