2014-01-21 5 views
-1

У меня есть уникальная проблема в моем приложении wpf mvvm. У меня есть GridContol (Вид) в моем приложении, для которого мне нужно привязать наблюдаемые коллекции. У меня разные ObservableCollections для разных клиентов. В зависимости от клиента я должен загружать данные по gridcontrol (View). поэтому с одним привязкой к gridControl (View), как я могу это добиться.WPF MVVM динамическая наблюдаемая привязка коллекции к сетке данных

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

ответ

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; } 
+0

Но как насчет разных типов родов и их разных свойств? Тип blah1 имеет имя, тогда как blah2 имеет цену и количество. – csteinmueller

+0

Я не думаю, что это важно, WPF связывает и использует объекты во время выполнения, он не выполняет никаких проверок во время компиляции. Собственно, просто сделайте CollectionSource объектом, не нужно IEnumerable . WPF выяснит остальное. –

+0

Спасибо Joel Lucsy за отличный ответ :) :) но я получаю еще одну проблему. когда я загружаю данные в сетку, некоторые объекты (а не переменные) также заполняются как столбцы, которые я не использую. Пожалуйста, помогите мне с этим – Nishanth

1

Существуют различные способы обрешетке динамического viewmodels.But большинство из них использует .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

Смежные вопросы