1

我无法像在 c# 表单中那样过滤 WPF 表单中的下拉列表..

我为我的场景下拉列表创建了一个列表,并将其用作LoadUserControl()方法中的项目源,如下所示。

  public class FilterListItem
  {
    public string Filter { get; set; }
  }

  public LoadUserControl()
  {
  InitializeComponent();
  List<FilterListItem> FilterList = new List<FilterListItem>();
  FilterList.Add(new FilterListItem() { Filter = "Make" });
  FilterList.Add(new FilterListItem() { Filter = "Model" });
  FilterList.Add(new FilterListItem() { Filter = "Year" });
  myscenario.ItemsSource= FilterList;
  myscenario.SelectedItem= "Model";
  }

这是脚本下拉列表的代码,可根据场景下拉列表中的选择进行过滤。

private void myscenario_SelectionChanged(object sender, SelectionChangedEventArgs e)
  {

 if (myscenarios.SelectedItem.ToString() == "Model")
    {
     Scriptlist.Add(script1);
     Scriptlist.Add(script2);
     break;
    }
 else if (myscenarios.SelectedItem.ToString() == "Make")
    {
     Scriptlist.Add(script3);
     Scriptlist.Add(script4);
     break;
    }

else
    {
     Scenariolist.Add(sc5);
     Scenariolist.Add(sc6);
    }
 }

当我执行脚本时,UI 只会使用默认值,即模型,每当我从下拉列表中选择其他值时,它仍将所选项目显示为“模型”。

此外,当我使用消息框从场景下拉列表中调试所选项目的值时,我收到如下消息。

**MessageBox.Show(myscenarios.SelectedItem.ToString()); 

//我在消息框中得到“Filterlistitem”,而不是我刚刚选择的选定项目。**

我所需要的只是根据用户在场景下拉列表中的选择过滤脚本下拉列表,就像我上面提到的那样。

仅供参考,我放 xaml UI 并不是为了让问题更简单。

任何帮助,将不胜感激。

谢谢

硒爱好者

4

1 回答 1

2

看来您正在使用List<T>ItemsSource下拉控件在列表更改时不会更新 UI。当集合发生变化时,使用ObservableCollections通知 UI。

于 2012-06-12T22:34:55.013 回答