【问题标题】:c# wpf Dynamic DataGridc# wpf Dynamic DataGrid
【发布时间】:2017-11-17 10:41:02
【问题描述】:

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

数据网格 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>

【问题讨论】:

    标签: c# wpf datagrid


    【解决方案1】:

    不要使用两个网格!您可以利用 WPF 绑定来解决此问题。您可以在“全选”选项上显示\隐藏“名称”列(您是否使用了复选框?)。要了解如何显示\隐藏 Datagrid 列,请参阅 this link

    您的第二个问题是选择不同的名称并在 datagrid1 中加载数据,因为您可以在 datagrid2 的“SelectedName”更改时设置 Datagrid1 的数据源。同样,这只是 WPF 绑定。

    WPF 处理您的场景非常简单。 如果您需要更多详细信息,请告诉我。

    【讨论】:

      猜你喜欢
      • 2014-10-05
      • 1970-01-01
      • 2011-09-27
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多