C# WPF数据网格主细节MVVM
我有一个WPF应用程序。我有两个datagrid,一个包含指标列表,另一个datagrid我想显示顶部datagrid中所选指标的更多细节 然而,我的细节网格没有显示任何数据,我也不知道为什么。我应该指出,主数据网格的填充情况良好。我已经在属性指示符selected的setter中设置了一个中断,并且可以看到它在选择一个项目时被调用&see the data是正确的,但只是没有显示在detail datagrid中 XAMLC# WPF数据网格主细节MVVM,c#,wpf,xaml,mvvm,datagrid,C#,Wpf,Xaml,Mvvm,Datagrid,我有一个WPF应用程序。我有两个datagrid,一个包含指标列表,另一个datagrid我想显示顶部datagrid中所选指标的更多细节 然而,我的细节网格没有显示任何数据,我也不知道为什么。我应该指出,主数据网格的填充情况良好。我已经在属性指示符selected的setter中设置了一个中断,并且可以看到它在选择一个项目时被调用&see the data是正确的,但只是没有显示在detail datagrid中 XAML C# 类视图模型:INotifyPropertyChanged {
C#
类视图模型:INotifyPropertyChanged
{
列表指示列表;
指示器振打器\u指示器振打器;
公共列表指示符列表
{
获取{return\u indicatorList;}
设置
{
_指标列表=数值;
房地产变更(“指标列表”);
}
}
公共指示灯已选择振打指示灯
{
获取{return\u indicatorWrapper;}
设置
{
_指示器振打器=值;
OnPropertyChanged(“指示符说话者”);
}
}
公共视图模型()
{
DatabaseRetrieveSimulator db=新的DatabaseRetrieveSimulator();
IndicatorList=db.GetIndicators();
}
}
在您的指示符选择的setter中,您正在调用使用指示符Rapper更改的属性…它应该是指示符选择的:)在您的指示符选择的setter中,您正在调用使用指示符Rapper更改的属性…它应该是指示符选择的:)啊!好地方!尽管它仍然没有在我的详细信息中显示任何数据datagridDataGrid用于显示项目集合,但您将它绑定到单个项目,即DataContext.SelectedItem。如果IndicatorRapper类具有子项集合,则可以通过将绑定更改为类似ItemsSource=“{binding Path=IndicatorSelected.ChildItems}”的方式将网格绑定到该集合。如果您只想显示当前所选项目的所有字段,那么您需要为每个字段创建单独的控件,并在每个字段上设置绑定到指示符号selected.whatever.yes,这现在就有意义了。我已将其更改为Path=IndicatorSelected.Parameters,现在它可以在datagridsah和datagridsah中正常工作和显示!好地方!尽管它仍然没有在我的详细信息中显示任何数据datagridDataGrid用于显示项目集合,但您将它绑定到单个项目,即DataContext.SelectedItem。如果IndicatorRapper类具有子项集合,则可以通过将绑定更改为类似ItemsSource=“{binding Path=IndicatorSelected.ChildItems}”的方式将网格绑定到该集合。如果您只想显示当前所选项目的所有字段,那么您需要为每个字段创建单独的控件,并在每个字段上设置绑定到指示符号selected.whatever.yes,这现在就有意义了。我已经将其更改为Path=IndicatorSelected.Parameters,现在它可以在两个数据网格中正常工作和显示
<DataGrid x:Name="dgModels" Grid.Column="0"
ItemsSource="{Binding Path=IndicatorList}"
SelectedItem="{Binding Path=IndicatorSelected}"
AutoGenerateColumns="false">
<DataGrid.Columns>
<DataGridTextColumn Header="Model" Binding="{Binding Name}" IsReadOnly="True"/>
<DataGridCheckBoxColumn Header="Run" Binding="{Binding Run}" IsReadOnly="false"/>
</DataGrid.Columns>
</DataGrid>
<DataGrid x:Name="dgParameterInfo" Grid.Column="1"
ItemsSource="{Binding Path=IndicatorSelected}"
AutoGenerateColumns="false">
<DataGrid.Columns>
<DataGridTextColumn Header="Parameter Name" Binding="{Binding Path=Name}" IsReadOnly="True"/>
<DataGridTextColumn Header="Default Value" Binding="{Binding Path=DefaultValue}" IsReadOnly="True"/>
<DataGridTextColumn Header="Run Value" Binding="{Binding Path=RunValue}" IsReadOnly="True"/>
<DataGridTextColumn Header="Parameter Type" Binding="{Binding Path=ParaType}" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
class ViewModel : INotifyPropertyChanged
{
List<IndicatorWrapper> _indicatorList;
IndicatorWrapper _indicatorWrapper;
public List<IndicatorWrapper> IndicatorList
{
get { return _indicatorList; }
set
{
_indicatorList = value;
OnPropertyChanged("IndicatorList");
}
}
public IndicatorWrapper IndicatorSelected
{
get { return _indicatorWrapper; }
set
{
_indicatorWrapper = value;
OnPropertyChanged("IndicatorWrapper");
}
}
public ViewModel()
{
DatabaseRetrieveSimulator db = new DatabaseRetrieveSimulator();
IndicatorList = db.GetIndicators();
}
}