【问题标题】:Limit activation of DataGrid.RowDetailsTemplate to certain columns将 DataGrid.RowDetailsTemplate 的激活限制为某些列
【发布时间】:2013-06-04 01:13:35
【问题描述】:

拥有一个包含多列的 DataGrid。
希望将 DataGrid.RowDetailsTemplate 的激活限制在某些列。
实际上,我只想从激活 DataGrid.RowDetailsTemplate 中排除一列。

【问题讨论】:

    标签: c# .net wpf datagrid rowdetailstemplate


    【解决方案1】:

    您可以使用RowDetailsVisibilityChanged 事件 (msdn) 并在事件处理程序中检查选定的列并隐藏或显示行详细信息。

    在下面的示例中,当我选择“名称”列中的单元格时,我不想显示行详细信息。

    XAML:

    <DataGrid Name="outerGrid" AutoGenerateColumns="False"                 
              ItemsSource="{Binding}"                  
              RowDetailsVisibilityChanged="outerGrid_RowDetailsVisibilityChanged" >
        <DataGrid.RowDetailsTemplate>
            <DataTemplate>
                <DataGrid Name="innerGrid" ItemsSource="{Binding Items}" AutoGenerateColumns="False" >
                    <DataGrid.Columns>
                        <DataGridTextColumn  Header="ID" Binding="{Binding Id}"/>
                        <DataGridTextColumn  Header="Name" Binding="{Binding Name}"/>
                        <DataGridTextColumn  Header="Surname" Binding="{Binding Surname}"/>
                    </DataGrid.Columns>
                </DataGrid>
            </DataTemplate>
        </DataGrid.RowDetailsTemplate>
        <DataGrid.Columns>
            <DataGridTextColumn  Header="ID" Binding="{Binding Id}"/>
            <DataGridTextColumn  Header="Name" Binding="{Binding Name}"/>
            <DataGridTextColumn  Header="Surname" Binding="{Binding Surname}"/>
        </DataGrid.Columns>
    </DataGrid>
    

    代码隐藏:

    private void outerGrid_RowDetailsVisibilityChanged(object sender, DataGridRowDetailsEventArgs e)
    {
        DataGrid dg = sender as DataGrid;
        if (dg != null)
        {
            if (dg.CurrentCell != null && dg.CurrentCell.Column.Header.ToString() == "Name")
            {                    
                e.DetailsElement.Visibility = System.Windows.Visibility.Collapsed;
            }
            else
            {   
                e.DetailsElement.Visibility = System.Windows.Visibility.Visible;
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-02
      • 1970-01-01
      • 2011-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多