WPF MVVM动态可观察集合绑定到数据网格

时间:2014-01-21 14:19:17

标签: wpf c#-4.0 mvvm

我的wpf mvvm应用程序中存在一个独特的问题。 我的应用程序中有一个GridContol(视图),我必须绑定一个可观察的集合。我为不同的客户提供不同的ObservableCollections。根据客户端,我必须在gridcontrol(View)上加载数据。所以在gridControl(View)上有一个绑定我怎么能实现这一点。

<dxg:GridControl 
ItemsSource="{Binding CommonBindingType??????}">   
</dxg:GridControl>

2 个答案:

答案 0 :(得分:1)

有多种方法可以创建动态视图模型。但是大多数方法都使用.NET 4.0动态类型或ExpandoObject。

您需要创建通用视图模型,这些视图模型可以在运行时非常快并将此通用视图模型与视图中的控件绑定。

您可以按照以下方法/示例进行操作:

1) http://www.shujaat.net/2012/09/dynamicobject-wpf-binding.html

2) http://www.codeproject.com/Articles/613610/Dynamic-View-Model

答案 1 :(得分:1)

只需在视图模型上创建一个属性,该属性是对正确集合的引用。

<dxg:GridControl ItemsSource="{Binding CollectionSource}" />

当然,请使用合适的INotifyPropertyChanged填充我的来源:

public class YourViewModel
{
    public ObservableCollection<blah> Source1 { get; set; }
    public ObservableCollection<blah> Source2 { get; set; }
    public ObservableCollection<blah> CollectionSource { get; set; }
    public YourViewModel()
    {
        CollectionSource = Source1;
    }
    public void ChangeToSource2()
    {
        CollectionSource = Source2;
    }
}

如果您的集合具有不同的泛型类型,那么CollectionSource应该更通用一些,比如

public IEnumerable<object> CollectionSource { get; set; }