首页 文章

在viewmodel或xaml代码隐藏中的wpf collectionviewsource

提问于
浏览
1

我陷入了这种困境,希望有人可以帮助我

抱歉,我不能在此处粘贴代码作为公司块发布 .

我想在xaml中使用collectionviewsource . 我尝试了两种方法,静态资源和cvs.source . 第一个工作得很好,但限制是我只能从代码隐藏中找到资源 . 但控制ui和disaplay ui不在同一个视图上,我不知道如何触发排序/过滤,所以我移动到第二个选项,我把cvs放在视图模型中,属性暴露给两个ui . 但我得到了这个着名的错误“试图改变ui不属于这个线程”

那么一般来说,将csv放在何处的好习惯是什么 . 我检查了许多地方建议第二个选项http://www.xamlplayground.org/post/2009/07/18/Use-CollectionViewSource-effectively-in-MVVM-applications.aspxXAML Binding to a CollectionViewSource property on a ViewModel但似乎没有人提到ui线程所有权问题 . 我做的事真的很蠢

谢谢

1 回答

  • 3

    如果您一直遇到线程问题,请使用 Dispatcher

    Application.Current.Dispatcher.Invoke(
      new Action(() => /* modify the collection */));
    

    或者使用 EnableCollectionSynchronization 方法,这是WPF 4.5中的新方法,并将为您执行相同的操作:

    private static object syncObject = new object();
    //...
    BindingOperations.EnableCollectionSynchronization(yourCollection, syncObject);
    

    了解更多信息here .

相关问题