在我的WPF应用程序中,我有:
->文本框(textChanged)
-> 2个单选按钮
->具有内容的ListView。 “作者”,“标题”。
我需要允许从Listview中搜索。
我的问题是:如何检查单选按钮检查是否已更改?
答案 0 :(得分:0)
如评论中所述,WPF首选MVVM,然后您将绑定到IsChecked属性。
private bool _RadioButtonChecked;
public bool RadioButtonChecked
{
get => _RadioButtonChecked;
set
{
_RadioButtonChecked = value;
//Refresh filter here
}
}
Xaml绑定:
<RadioButton Content="RadioButton" IsChecked="{Binding RadioButtonChecked}"/>
答案 1 :(得分:0)
我应该如何以及在何处使用此已发布的代码?
private bool _RadioButtonChecked;
public bool RadioButtonChecked
{
get => _RadioButtonChecked;
set
{
_RadioButtonChecked = value;
//Refresh filter here
}
}
`这是我的“过滤方法”
private bool TitleFilter(object item)
{
if (String.IsNullOrEmpty(txtFilter.Text))
return true;
else
return ((item as Book).Title.IndexOf(txtFilter.Text, StringComparison.OrdinalIgnoreCase) >= 0);
}
private bool AuthorFilter(object item)
{
if (String.IsNullOrEmpty(txtFilter.Text))
return true;
else
return ((item as Book).Author.IndexOf(txtFilter.Text, StringComparison.OrdinalIgnoreCase) >= 0);
}`:
当文本更改方法时
private void txtFilter_TextChanged(object sender, TextChangedEventArgs e)
{
CollectionViewSource.GetDefaultView(ListOfBooks.ItemsSource).Refresh();
}
我正在像这样使用CollectionView
ListOfBooks.ItemsSource = libraryBook;
CollectionView view = (CollectionView)CollectionViewSource.GetDefaultView(libraryBook);
我认为我应该使用if语句来提取特定的过滤器
if(authorRadioButton.IsChecked == true)
{
view.Filter = AuthorFilter;
}
else if (TitleRadioButton.IsChecked == true)
{
view.Filter = TitleFilter;
}