如何在初始化GridView列后调整其宽度?

时间:2012-08-30 18:56:37

标签: wpf gridview slider width clipping

更新了问题:

在WPF中,我使用GridView(在ListView内)显示Textbox-Slider对的列表。每个这样的对都排列在单列的一个单元格中(每对使用DockPanel)。

Slider具有最小宽度,因此它不会折叠,文本框不会,它会在接收输入时动态调整大小。

问题是,当文本框的宽度增加时,列宽不会等效地更改。这会导致相应行中的滑块在视觉上被剪裁在右侧。结果,当移动到右端时,滑块的旋钮在空隙中消失。

所以问题是:如果内容超出可用空间(在初始化时设置),如何强制gridview的列宽动态调整大小?

Percentage sliders with disappearing knobs

只需忽略文本框和滑块之间的标签(没有它,行为不会改变)。

3 个答案:

答案 0 :(得分:2)

这样做的一种方法是取标签的事件并将其装入网格(sizeChanged),然后按照标签尺寸的比例调整网格大小......

答案 1 :(得分:1)

某些容器可能会通过ClipToBounds剪辑它,或者根据背景颜色的实现方式,它们可能会覆盖其他列。

答案 2 :(得分:1)

Size containerSize=new Size(100, 100);
public Size CalculateSize(FrameworkElement visualBlock, Size containerSize)
{
    visualBlock.Measure(containerSize);
    return visualBlock.DesiredSize;
}

此代码获取容器内渲染的框架元素的大小。之后,您可以以编程方式设置大小。 需要知道父母大小才能正确工作。