2012-06-12 47 views
1

我无法过滤在WPF形式下拉像在C#的形式..我怎么能在WPF C#另一个下拉过滤器下拉菜单值?

我创建了一个列表,我的情况下拉和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); 
    } 
} 

当我执行该脚本,用户界面只会默认值是模型,每当我从下拉式等价值,它仍然显示所选择的项目为“模型”。

此外,当调试所选项目的从场景中的下拉列表值与在MessageBox,我收到此消息如下。

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

//我得到“Filterlistitem”的消息框,我只是选择的选择项,而不是**

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

仅供参考,我并没有把XAML UI只是为了使问题更简单。

任何帮助,将不胜感激。

感谢

seleniumlover

+0

如果删除myscenario_SelectionChanged事件处理程序,您可以更改所选的项目? – Paparazzi

回答

2

看来,您使用的是List<T>为您的下拉控制ItemsSource不更新当列表改变UI。使用ObservableCollections在集合更改时通知UI。

+0

谢谢你的回复。我对WPF很陌生。您可以解释如何使用ObservableCollections在集合更改时通知UI以上问题吗? – seleniumlover

+0

而是一个'清单的'使用'的ObservableCollection '。 – evanb

相关问题