【发布时间】:2011-10-11 07:49:47
【问题描述】:
我有一个使用 Telerik RadGridView 控件和 Caliburn.Micro MVVM 框架实现的应用程序。由于一些性能问题,我需要实现 Telerik VirtualQueryableCollectionView 来代替正在使用的直接 control-to-ObservableCollection 绑定。原始代码将 RadGridView 的 ItemsSouce 属性绑定到视图模型的 Price 属性。我必须在代码隐藏中消除该绑定和 this:
public PricingView(PricingViewModel vm)
{
InitializeComponent();
var dataView = new VirtualQueryableCollectionView()
{ LoadSize=20, VirtualItemCount = vm.Prices.Count };
dataView.ItemsLoading += (sender, e) =>
{
var view = sender as VirtualQueryableCollectionView;
if (dataView != null)
{
view.Load(e.StartIndex, vm.Prices.Skip(e.StartIndex).Take(e.ItemCount));
}
};
this.PricesGridView.ItemsSource = dataView;
}
由于这段代码只处理 UI 特定的功能并且它是特定于视图实现的,我很满意这段代码属于代码隐藏而不是 ViewModel,因为它会偏离 MVVM 模式来放置对 ViewModel 中的 VirtualQueryableCollectionView 的引用。我不满意的部分是将 ViewModel 的引用传递给 View 的构造函数。有没有一种无需在构造函数中传递引用即可在代码隐藏中获取引用的好方法?
或者有没有更好的方法来做这一切?
【问题讨论】:
标签: silverlight mvvm telerik telerik-grid