将 DataGrid.RowDetailsTemplate 的激活限制为某些列

Posted

技术标签:

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

拥有一个包含多列的 DataGrid。 希望将 DataGrid.RowDetailsTemplate 的激活限制在某些列。 实际上,我只想从激活 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;
        
    

【讨论】:

以上是关于将 DataGrid.RowDetailsTemplate 的激活限制为某些列的主要内容,如果未能解决你的问题,请参考以下文章

如何将Ios文件上传到

Javascript 将正则表达式 \\n 替换为 \n,将 \\t 替换为 \t,将 \\r 替换为 \r 等等

如何将视频文件转换格式

sh 一个将生成CA的脚本,将CA导入到钥匙串中,然后它将创建一个证书并与CA签名,然后将其导入到

python怎么将0写入文件?

如何将CMD窗口背景改成透明?