我有一个带有数据网格的WPF应用程序。在加载时,我的ViewModel填充一个名为HldChangeList的列表。此列表绑定到数据网格。该列表包含约。 200个项目,但此刻该列表显示10个空行但没有列标题。我已经停止了我的二传手,可以看到代码到达那里。不确定我还缺少什么。
查看模型
private List<HoldingPrePost> _hldChangeList;
public List<HoldingPrePost> HldChangeList
{
get
{
return _hldChangeList;
}
set
{
_hldChangeList = value;
OnPropertyChanged("HldChangeList");
}
}
XAML
<DataGrid x:Name="dataGridHoldings"
DataContext="{Binding HldChangeList}"
AutoGenerateColumns="False"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
Background="Silver"
RowHeaderWidth="30"
ItemsSource="{Binding Path=HldChangeList, UpdateSourceTrigger=PropertyChanged}"
Style="{StaticResource DataGridTemplate}"
ColumnHeaderStyle="{StaticResource DG_ColumnHeader}"
RowStyle="{StaticResource DG_Row}"
CellStyle="{StaticResource DG_Cell}"
RowHeaderStyle="{StaticResource DG_RowHeader}"
Margin="15,5,20,15" >
<DataGridTextColumn Header="ABC" Binding="{Binding ABC}" IsReadOnly="True"/>
<DataGridTextColumn Header="DEF" Binding="{Binding DEF}" IsReadOnly="True"/>
<DataGridTextColumn Header="GHI" Binding="{Binding GHI}" IsReadOnly="True"/>
</DataGrid>
答案 0 :(得分:2)
您将DataContext
和ItemsSource
设置为HldChangeList
<DataGrid
DataContext="{Binding HldChangeList}"
ItemsSource="{Binding Path=HldChangeList, UpdateSourceTrigger=PropertyChanged}"/>
WPF将在当前绑定上下文中搜索HldChangeList
项源属性,您也将其设置为HldChangeList
,因此在您的情况下,它将查找HldChangeList.HldChangeList
属性。如果HldChangeList
已经是当前绑定上下文的一部分,那么您不需要更改DataContext
,否则您需要将其设置为包含HldChangeList
属性的内容
修改强>
您忘记将列定义括在DataGrid.Columns
代码
<DataGrid x:Name="dataGridHoldings" ... ItemsSource="{Binding Path=HldChangeList}">
<DataGrid.Columns>
<DataGridTextColumn Header="ABC" Binding="{Binding ABC}" IsReadOnly="True"/>
<DataGridTextColumn Header="DEF" Binding="{Binding DEF}" IsReadOnly="True"/>
<DataGridTextColumn Header="GHI" Binding="{Binding GHI}" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
答案 1 :(得分:1)
正如dkozl所说,
您需要明确设置ItemsSource
DataGrid
而不设置DataContext
或隐式设置DataContext
<强>隐强>
<DataGrid ...
DataContext="{Binding HldChangeList}" ...
ItemsSource="{Binding}" ... />
<强>显强>
<DataGrid ...
ItemsSource="{Binding HldChangeList}" ... />