Wpf Grid Splitter,代码中设置列宽

时间:2015-01-22 11:17:00

标签: c# wpf

我有一个带网格的控件。

网格有三列,可以处于以下状态之一

  • 仅显示A列
  • 显示的A列和B列
  • 显示A,B和C列

这是唯一可能的三种状态。

我可以使用以下方法“关闭”列:

private void CloseColumnB()
{
    ColumnB.Width = new GridLength(0);
}

我可以用这个打开一个专栏:

private void OpenColumnB()
{
    ColumnB.Width = new GridLength(1, GridUnitType.Star);
}
  • 如果只打开一列,则必须占用所有可用空间。
  • 如果两列打开,则必须占用一半的空间
  • 如果打开三列,则每列都占据空间的三分之一。

除了现在要求使用网格分割器以便用户可以根据需要调整列的大小时,这种方法很好用。所以我使用了XAML:

<GridSplitter Grid.Column="0" HorizontalAlignment="Right" Width="3" Background="White"/>
<GridSplitter Grid.Column="1" HorizontalAlignment="Right" Width="3" Background="White"/>

这成功地允许我调整控件的大小。

无论其

当我调整网格大小时,然后关闭其中一列并尝试重新打开它,第二列和第三列被挤压到网格的最右侧,这意味着唯一可见的列是A列和B列和C列仅通过网格分割器最右侧的白线可见。

  • 如果我根本不调整大小,列的打开和关闭将按预期工作。
  • 如果我稍微调整一下,ColumnA似乎占用了所有可用空间。

我想要的是让用户能够调整列的大小,但是当列打开时,它们会重置为默认大小(即2列=每半一半)

我希望这是有道理的,如果有人能提供帮助,我会非常感激。

0 个答案:

没有答案