首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >刷新ObjectDataProvider时视图丢失

刷新ObjectDataProvider时视图丢失
EN

Stack Overflow用户
提问于 2008-12-21 07:43:13
回答 1查看 730关注 0票数 2

我正在根据Josh Smith在http://joshsmithonwpf.wordpress.com/2007/06/12/searching-for-items-in-a-listbox中的例子在列表上实现一个文本框过滤器。基本上,它将视图上的过滤器设置为一个代理,用于检查搜索框中的文本。我像这样挂起过滤器:

代码语言:javascript
复制
var pickerView = FindResource("sortedRulesView") as CollectionViewSource;
new TextSearchFilter(pickerView.View, SearchTextBox);

后来,当我刷新ObjectDataProvider时,过滤器丢失了。我注意到pickerView.View在刷新后有一个不同的哈希码。是否在数据刷新时重新创建所有视图?这是否意味着每当我调用ObjectDataProvider.Refresh()时都需要重新附加过滤器?有没有更聪明的方法来安装这个过滤器,而不需要照看孩子?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2008-12-23 00:24:50

您说得对,在设置CollectionViewSource.Source时,CollectionViewSource.View将被替换。

解决方案是使用CollectionViewSource.Filter事件而不是CollectionView.Filter属性。当你的视图消失时,它会一直存在。

您只需对Josh Smith的TextSearchFilter类进行最少的更改即可完成此操作:

代码语言:javascript
复制
public class TextSearchFilter
{
    public TextSearchFilter( 
        CollectionViewSource filteredView, 
        TextBox textBox )
    {
        string filterText = "";

        filteredView.Filter += delegate( object obj, FilterEventArgs e )                
        {
            if( String.IsNullOrEmpty( filterText ) )
                e.Accepted = true;

            string str = e.Item as string;
            if( String.IsNullOrEmpty( str ) )
                e.Accepted = false;

            int index = str.IndexOf(
                filterText,
                0,
                StringComparison.InvariantCultureIgnoreCase );

            e.Accepted = index > -1;
        };          

        textBox.TextChanged += delegate
        {
            filterText = textBox.Text;
            filteredView.View.Refresh();
        };
    }
}

然后你的连接代码就变成了:

代码语言:javascript
复制
var pickerView = FindResource("sortedRulesView") as CollectionViewSource;
new TextSearchFilter(pickerView, SearchTextBox);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/384221

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档