2010-07-12 2 views
0

У меня есть свойство datagrid для Silverlight и свойство autogenerate столбцов установлено на false. Я использую MVVM и хочу связать коллекцию столбцов.Silverlight DataGrid и связывание столбцов

Данные, которые я получаю, от xml. Нечто похожее на образец кода

http://blogs.msdn.com/b/deepak_verma/archive/2008/07/19/dynamic-creation-binding-of-silverlight-datagrid.aspx

Теперь пропускание управления DataGrid из xmal файла в видовом я могу получить ожидаемое поведение, но с таким образом, я добавлением столбцов в элементе управления DataGrid.

Есть ли способ, чтобы я мог привязать коллекцию столбцов с помощью элемента управления datagrid, чтобы не нужно было передавать элемент управления для просмотра модели.

-Rajesh

+0

Просто личное мнение, но IMVHO ваша модель просмотра не должна знать о столбцах сетки - она ​​должна просто представлять список табличных данных или объектов, и это зависит от представления, чтобы решить, как его представить - представление не должно быть получение любой информации о столбце из viewmodel. – slugster

ответ

0

Похоже странном реализации MVVM у вас есть там. Ваша ViewModel должна быть полностью независимой от представления. Если вы хотите создавать динамические столбцы в сетке, то почему бы вам не отобразить соответствующую коллекцию свойств в ViewModel и не пропустить ее в соответствующем методе в коде вида, например,

//Used with an Infragistics XamWebGrid control 
private void BuildGrid() { 
    foreach (var dataItem in **ViewModel**.MyDataCollection) 
    { 
     var myCol = new TemplateColumn 
     { 
      HeaderText = dataItem.ItemNm, 
      Key = dataItem.PrimaryKey 
     }; 

     MyGrid.Columns.Add(myCol); 
    } 
} 

Вы действительно не должны передавать элементы управления из вида View в ViewModel. ViewModel не должен знать никаких элементов управления в представлении.

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