【问题标题】:How come DataGridTemplateColumn Visibility Hidden doesn't allocate space for the column?为什么 DataGridTemplateColumn Visibility Hidden 不为列分配空间?
【发布时间】:2012-11-15 04:35:04
【问题描述】:

我有以下 DataGridTemplateColumn:

 <DataGrid.>
      <DataGrid.Columns>
           <DataGridTemplateColumn x:Name="DeleteColumn" Header="" HeaderStyle="{StaticResource DeleteColumnHeaderStyle}" 
                                   Width="25" Visibility="Hidden" IsReadOnly="False" />
      </DataGrid.Columns>
 </DataGrid>

问题在于它没有为宽度分配“25”空间,并且似乎提供了与使用 Visiblity.Collapsed 相同的行为。

如何才能分配空间?

【问题讨论】:

  • 我怀疑这与 DataGridColumns 实际上并未作为 VisualTree 的一部分呈现的事实有关。您可能需要创建自定义 HeaderTemplateCellTemplate,并将它们设置为 Visibility="Hidden"
  • @Rachel 奇怪的是,从代码隐藏我可以使列可见,并隐藏(将列变为折叠),但它似乎不喜欢隐藏状态。

标签: c# wpf visibility datagridtemplatecolumn


【解决方案1】:

它必须与VisualTree 布局有关,因为DataGridColumns 不在DataGrid 的可视树中。不过我不确定,但作为一种解决方法,您可以使用该列的 CellTemplate 来使用以下 XAML 保留空间 -

   <DataGrid>
        <DataGrid.Columns>
            <DataGridTemplateColumn Width="100">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Visibility="Hidden"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>

【讨论】:

  • 我将如何在代码隐藏中使每个 TextBlock 可见/隐藏在 DataGridTemplateColumn 中?因为目前,我可以检索 DataGridTemplateColumn,但我将如何检索 TextBlock?
猜你喜欢
  • 1970-01-01
  • 2015-05-06
  • 2014-05-13
  • 1970-01-01
  • 2013-03-26
  • 2023-03-17
相关资源
最近更新 更多