WPF DataGrid 主从表 数据绑定方式
昨天在网上搜了一下午没有看到一个关于WPF DataGrid主从表数据绑定的示例,但是我坚信这个简单的功能肯定是支持的,经研究问题解决。
现把相关方法共享下,给现在还在郁闷的兄弟们一点参考。重点在于定义DataGrid的“RowDetailsTemplate”属性。而绑定的数据对象只要定义从表的集合Children就可以了。
前台定义如下:
<DataGrid Grid.Row="0" Margin="0,0,0,0" VerticalAlignment="Top" AutoGenerateColumns="False" >
<DataGrid.Columns> <DataGridTextColumn Header="出现连阴雨站数" IsReadOnly="True" Width="auto" Binding="{Binding Path=出现站点数}"/>
<DataGridTextColumn Header="开始日期" IsReadOnly="True" Width="auto" Binding="{Binding Path=开始日期, StringFormat=yyyy-MM-dd}"/>
<DataGridTextColumn Header="结束日期" IsReadOnly="True" Width="auto" Binding="{Binding Path=结束日期, StringFormat=yyyy-MM-dd}"/>
<DataGridTextColumn Header="最长持续天数" IsReadOnly="True" Width="auto" Binding="{Binding Path=最长持续天数}"/>
<DataGridTextColumn Header="最长持续天数出现站点" IsReadOnly="True" Width="auto" Binding="{Binding Path=最长持续天数出现站点}"/>
<DataGridTextColumn Header="过程最大雨量" IsReadOnly="True" Width="auto" Binding="{Binding Path=过程最大雨量}"/>
<DataGridTextColumn Header="过程最大雨量出现站点" IsReadOnly="True" Width="auto" Binding="{Binding Path=过程最大雨量出现站点}"/>
<DataGridTextColumn Header="日最大雨量" IsReadOnly="True" Width="auto" Binding="{Binding Path=日最大雨量}"/>
<DataGridTextColumn Header="日最大雨量出现站点" IsReadOnly="True" Width="auto" Binding="{Binding Path=日最大雨量出现站点}"/>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid Grid.Row="0" Margin="0,0,0,0" ItemsSource="{Binding Path=Children}" VerticalAlignment="Top" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="站名" IsReadOnly="True" Width="80" Binding="{Binding Path=站名}"/>
<DataGridTextColumn Header="站台号" IsReadOnly="True" Width="80" Binding="{Binding Path=站台号}"/>
<DataGridTextColumn Header="开始日期" IsReadOnly="True" Width="auto" Binding="{Binding Path=开始日期, StringFormat=yyyy-MM-dd}"/>
<DataGridTextColumn Header="结束日期" IsReadOnly="True" Width="auto" Binding="{Binding Path=结束日期, StringFormat=yyyy-MM-dd}"/>
<DataGridTextColumn Header="持续天数" IsReadOnly="True" Width="auto" Binding="{Binding Path=连续降水日数}"/>
<DataGridTextColumn Header="总雨量" IsReadOnly="True" Width="auto" Binding="{Binding Path=总降水量}"/>
<DataGridTextColumn Header="一日最大雨量" IsReadOnly="True" Width="auto" Binding="{Binding Path=最大降水量}"/>
<DataGridTextColumn Header="日照时数" IsReadOnly="True" Width="auto" Binding="{Binding Path=无降水日照时数}"/>
</DataGrid.Columns>
</DataGrid></DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
<DataGrid.Columns> <DataGridTextColumn Header="出现连阴雨站数" IsReadOnly="True" Width="auto" Binding="{Binding Path=出现站点数}"/>
<DataGridTextColumn Header="开始日期" IsReadOnly="True" Width="auto" Binding="{Binding Path=开始日期, StringFormat=yyyy-MM-dd}"/>
<DataGridTextColumn Header="结束日期" IsReadOnly="True" Width="auto" Binding="{Binding Path=结束日期, StringFormat=yyyy-MM-dd}"/>
<DataGridTextColumn Header="最长持续天数" IsReadOnly="True" Width="auto" Binding="{Binding Path=最长持续天数}"/>
<DataGridTextColumn Header="最长持续天数出现站点" IsReadOnly="True" Width="auto" Binding="{Binding Path=最长持续天数出现站点}"/>
<DataGridTextColumn Header="过程最大雨量" IsReadOnly="True" Width="auto" Binding="{Binding Path=过程最大雨量}"/>
<DataGridTextColumn Header="过程最大雨量出现站点" IsReadOnly="True" Width="auto" Binding="{Binding Path=过程最大雨量出现站点}"/>
<DataGridTextColumn Header="日最大雨量" IsReadOnly="True" Width="auto" Binding="{Binding Path=日最大雨量}"/>
<DataGridTextColumn Header="日最大雨量出现站点" IsReadOnly="True" Width="auto" Binding="{Binding Path=日最大雨量出现站点}"/>
</DataGrid.Columns>
<DataGrid.RowDetailsTemplate>
<DataTemplate>
<DataGrid Grid.Row="0" Margin="0,0,0,0" ItemsSource="{Binding Path=Children}" VerticalAlignment="Top" AutoGenerateColumns="False" >
<DataGrid.Columns>
<DataGridTextColumn Header="站名" IsReadOnly="True" Width="80" Binding="{Binding Path=站名}"/>
<DataGridTextColumn Header="站台号" IsReadOnly="True" Width="80" Binding="{Binding Path=站台号}"/>
<DataGridTextColumn Header="开始日期" IsReadOnly="True" Width="auto" Binding="{Binding Path=开始日期, StringFormat=yyyy-MM-dd}"/>
<DataGridTextColumn Header="结束日期" IsReadOnly="True" Width="auto" Binding="{Binding Path=结束日期, StringFormat=yyyy-MM-dd}"/>
<DataGridTextColumn Header="持续天数" IsReadOnly="True" Width="auto" Binding="{Binding Path=连续降水日数}"/>
<DataGridTextColumn Header="总雨量" IsReadOnly="True" Width="auto" Binding="{Binding Path=总降水量}"/>
<DataGridTextColumn Header="一日最大雨量" IsReadOnly="True" Width="auto" Binding="{Binding Path=最大降水量}"/>
<DataGridTextColumn Header="日照时数" IsReadOnly="True" Width="auto" Binding="{Binding Path=无降水日照时数}"/>
</DataGrid.Columns>
</DataGrid></DataTemplate>
</DataGrid.RowDetailsTemplate>
</DataGrid>
数据对象定义如下:
public class 区域连阴雨过程历史对比
{
public int 出现站点数 { get; set; }
public DateTime 开始日期 { get; set; }
public DateTime 结束日期 { get; set; }
public int 最长持续天数 { get; set; }
public string 最长持续天数出现站点 { get; set; }
public double 过程最大雨量 { get; set; }
public string 过程最大雨量出现站点 { get; set; }
public double 日最大雨量 { get; set; }
public string 日最大雨量出现站点 { get; set; }
public List<连阴雨过程信息> Children { get; set; }
}
{
public int 出现站点数 { get; set; }
public DateTime 开始日期 { get; set; }
public DateTime 结束日期 { get; set; }
public int 最长持续天数 { get; set; }
public string 最长持续天数出现站点 { get; set; }
public double 过程最大雨量 { get; set; }
public string 过程最大雨量出现站点 { get; set; }
public double 日最大雨量 { get; set; }
public string 日最大雨量出现站点 { get; set; }
public List<连阴雨过程信息> Children { get; set; }
}
公司网站:
http://www.codersoft.cn
专业开发:
气象软件、监狱网上购物系统、两法衔接平台