【发布时间】:2018-04-12 08:29:42
【问题描述】:
我有一个包含三列的网格。
<Grid Background="AliceBlue">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="8*" />
<ColumnDefinition Width="5" />
<ColumnDefinition Width="2*" Name="ManualControlsSplit" />
</Grid.ColumnDefinitions>
第一列包含一个表格和一个图表。
第二列包含一个 GridSplitter。
第三列包含一个 StackPanel,其中包含许多 TextBlocks、Buttons 和 Grids,其中包含 TextBlocks 和 Buttons。文本大小是动态的,并且取决于翻译资源。
我需要计算第三列的内容理想情况下希望能够被绘制到的最小宽度,以便内容不会被剪裁。
我对 WPF 的了解仅限于我可以通过谷歌搜索的内容,因此我们将不胜感激。
【问题讨论】:
-
我知道我可以将控件设置为自动调整为我希望使用以下计算的宽度:“parentColumn.Width = GridLength.Auto;”。然而这不是我想要的。
-
我不明白。你不能将第三列设置为 Width = "Auto" 吗?
-
我不想改变我想计算理想宽度的宽度,因为我需要在其他一些逻辑中使用该值。
-
你无法计算(据我所知)甚至没有渲染的东西的宽度,除非你给第三列内的每个控件一个固定的宽度。最好的办法是为 Grid.Loaded 添加一个事件处理程序,然后检查实际宽度。同样,如果您将第三列设置为 Auto,您将获得所需的最小宽度
-
进一步谷歌搜索提示测量,请参阅msdn.microsoft.com/en-us/library/…,但完全不清楚如何使用它。
标签: wpf wpf-controls