私はWPFを初めて使用CollectionView
し、ComboBox
コントロールを使用して一部のデータをフィルター処理したいと考えています。
私がこれまでにしたこと:
<CollectionViewSource x:Key="TeleView" Source="{StaticResource TeleData}" Filter="Filter" >
<CollectionViewSource.SortDescriptions>
<scm:SortDescription PropertyName="contact_name" Direction="Ascending" />
</CollectionViewSource.SortDescriptions>
<CollectionViewSource.GroupDescriptions>
<dat:PropertyGroupDescription PropertyName="contact_grname" />
</CollectionViewSource.GroupDescriptions>
CS:
private int count = 0;
void Filter(object sender, FilterEventArgs e)
{
if (value == "" || value == null)
{
e.Accepted = true;
}
else
{
System.Xml.XmlElement ele = e.Item as System.Xml.XmlElement;
string name = ele.SelectNodes("/response/contacts/contact/contact_grname")[count].InnerText;
count += 1;
//MessageBox.Show(name);
if (name == "group1") e.Accepted = true;
else e.Accepted = false;
}
}
group1
このコードは、要素内のテキストですべての要素を正常にフィルタリングしますcontact_grname
。
しかし、ComboBox
すべてを含むmyにバインドする方法contact_grnames
(XMLバインド)?!
private void cmbGroup_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
value = cmbGroup.SelectedValue.ToString();
lblGroupName.Content = "Groupname: " + value;
CollectionViewSource cvs = FindResource("TeleView") as CollectionViewSource;
}