单选按钮已检查已更改WPF

时间:2019-04-05 18:35:13

标签: c# wpf textbox radio-button

在我的WPF应用程序中,我有:

->文本框(textChanged)

-> 2个单选按钮

->具有内容的ListView。 “作者”,“标题”。

我需要允许从Listview中搜索。

我的问题是:如何检查单选按钮检查是否已更改?

2 个答案:

答案 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}"/>

除此之外,还有CheckedUnChecked个事件可供您使用。

答案 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;
                }