c#wpf动态DataGrid

时间:2017-06-15 05:09:31

标签: c# wpf datagrid

我有一个datagrid1有4列(余额,金额,交易,日期)。另一个datagrid2由名称组成。当我单击名称时,datagrid1会根据数据库中的“name”配置文件更改其值。在datagrid2中,我将“显示全部”行放在每当我选择“全部显示”时,datagrid1应该在最左边添加另一列并将列命名为“Name”,然后总列将为5.并且每当“全部显示”时“未选中datagrid1的列应返回4.现在我该怎么做?我脑海中的一个解决方案是创建2个精确的数据网格,相同的位置,只要我选择“全部显示”或选择名称就可以隐藏/显示它,但如果有更高效的其他方式,我认为它是错误的。我想这样做,因为你知道当我选择“全部显示”并查看我的datagrid1时,我无法分辨哪个事务是因为没有包含名称。提前谢谢。

datagrid XAML代码:

 <DataGrid x:Name="accountsBalance_grd"
                  HorizontalAlignment="Left"
                  Margin="266,118,0,0"
                  VerticalAlignment="Top"
                  Height="498"
                  Width="836"
                  AreRowDetailsFrozen="True"
                  AutoGenerateColumns="False"
                  SelectionChanged="accountsBalance_grd_SelectionChanged"
                  CanUserReorderColumns="False"
                  CanUserResizeColumns="False"
                  CanUserResizeRows="False"
                  CanUserSortColumns="False"
                  CanUserAddRows="False"
                  BorderBrush="Blue"
                  Background="White"
                  Foreground="Blue"
                  BorderThickness="2"
                  HorizontalGridLinesBrush="Black">
            <DataGrid.ColumnHeaderStyle>
                <Style TargetType="DataGridColumnHeader">
                    <Setter Property="FontSize"
                            Value="20" />
                </Style>
            </DataGrid.ColumnHeaderStyle>
            <DataGrid.Columns>
                <DataGridTextColumn Header="Total Balance"
                                    Width="150"
                                    Binding="{Binding accountBalanceTotal}"
                                    IsReadOnly="True" />
                <DataGridTextColumn Header="Amount"
                                    Width="120"
                                    Binding="{Binding accountBalanceAmount}"
                                    IsReadOnly="True" />
                <DataGridTextColumn Header="Transaction"
                                    Width="160"
                                    Binding="{Binding accountBalanceTransaction}"
                                    IsReadOnly="True" />
                <DataGridTextColumn Header="Date"
                                    Width="*"
                                    Binding="{Binding accountBalanceDate}"
                                    IsReadOnly="True" />
            </DataGrid.Columns>
            <DataGrid.RowStyle>
                <Style TargetType="{x:Type DataGridRow}">
                    <Setter Property="FontSize"
                            Value="15" />
                    <Setter Property="FontFamily"
                            Value="Arial" />
                    <Setter Property="FontWeight"
                            Value="Bold" />
                    <Setter Property="Foreground"
                            Value="Black" />
                </Style>
            </DataGrid.RowStyle>
        </DataGrid>

1 个答案:

答案 0 :(得分:1)

不要使用两个网格!!您可以利用WPF绑定来解决此问题。你可以显示\ hide&#34; Name&#34; &#34;选择全部&#34;选项(你是否使用了复选框?)。要了解如何显示\ hide Datagrid列,请参阅this link

您的第二个问题是关于选择不同的名称并在datagrid1中加载数据,因为您可以随时设置Datagrid1的数据源&#34; SelectedName&#34; datagrid2的变化。同样,这只是WPF绑定。

您的方案非常直接由WPF处理。 如果您需要更多详细信息,请与我们联系。