更新了问题:
在WPF中,我使用GridView
(在ListView
内)显示Textbox-Slider
对的列表。每个这样的对都排列在单列的一个单元格中(每对使用DockPanel
)。
Slider具有最小宽度,因此它不会折叠,文本框不会,它会在接收输入时动态调整大小。
问题是,当文本框的宽度增加时,列宽不会等效地更改。这会导致相应行中的滑块在视觉上被剪裁在右侧。结果,当移动到右端时,滑块的旋钮在空隙中消失。
所以问题是:如果内容超出可用空间(在初始化时设置),如何强制gridview的列宽动态调整大小?
只需忽略文本框和滑块之间的标签(没有它,行为不会改变)。
答案 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;
}
此代码获取容器内渲染的框架元素的大小。之后,您可以以编程方式设置大小。 需要知道父母大小才能正确工作。