WPF MVVMLight: Actualizar DataGrid basado en SelectedItem de otro DataGrid
Desarrollando unWPF
aplicación usandoMVVMLight
.
MiModel
consiste en unAttribute
clase y unDataSet
clase con unObservableCollection<Attribute>
propiedad nombradaAttributes
.
MiMainViewModel
tiene unDataSet
propiedad.
En miMainView
que tiene esDataContext
ajustado aMainViewModel
tengo dosDataGrids
. Uno tiene esItemsSource
unido aDataSet.Attributes
que funciona bien:
<DataGrid CanUserAddRows="false" AutoGenerateColumns="false" ItemsSource="{Binding DataSet.Attributes}">
//some DataGrid columns here
Quiero el segundoDataGrid
para mostrar algunas propiedades adicionales basadas en elSelectedItem
del primer DataGrid, así que hice lo siguiente:
1) agregó unSelectedAttribute
propiedad de tipoAttribute
en miMainViewModel
:
private Attribute selectedAttribute;
public Attribute SelectedAttribute
{
get { return selectedAttribute; }
set
{
if (selectedAttribute == value)
{
return;
}
selectedAttribute = value;
RaisePropertyChanged(() => SelectedAttribute);
},
}
2) modifiqué mi primerDataGrid
atar esSelectedItem
aSelectedAttribute
:
<DataGrid CanUserAddRows="false" AutoGenerateColumns="false" ItemsSource="{Binding DataSet.Attributes}" SelectedItem="{Binding SelectedAttribute}">
3)Actualización 1 selecciona elItemsSource
del segundoDataGrid
aSelectedAttribute
y creó una columna vinculada a laCategories
propiedad deSelectedAttribute
que es unObservableCollection<string>
:
<DataGrid SelectionMode="Single" EnableColumnVirtualization="True" AutoGenerateColumns="false" ItemsSource="{Binding Main.SelectedAttribute}">
<DataGrid.Columns>
<DataGridTextColumn Header="categories" Width="auto" Binding="{Binding Main.SelectedAttribute.Categories}" />
</DataGrid.Columns>
</DataGrid>
4) en miMainViewModel
una vezDataSet.Attributes
está poblado, configuro elSelectedAttribute
al primeroAttribute
en la colección (solo como prueba):
SelectedAttribute = DataSet.Attributes[0];
Una vez que ejecuto esto, el primeroDataGrid
carga bien, pero no se selecciona ningún elemento y el segundoDataGrid
no muestra nada ¿Qué estoy haciendo mal?