我有一个WPF用户控件,在网格上包含一个简单的标签和矩形,如下所示:
<Grid x:Name="Pressbutton">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="14"/>
<ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>
<Rectangle x:Name="LayerColour" Grid.Column="0" Fill="#FFF4F4F5" Width="10" Height="10" Margin="0" Stroke="Black" VerticalAlignment="Center" MinWidth="10" MinHeight="10" Visibility="Visible" HorizontalAlignment="Center"/>
<Label x:Name="DisplayNameLabel" Grid.Column="1" Content="Label" Margin="0" VerticalAlignment="Center" Height="26" Visibility="Visible" />
</Grid>
然后我将它们放在StackPanel中,它可以正常工作并使用GridSplitter将该标签列表与窗口的其他部分分开。
我的窗口看起来有点像这样:
==========================================x
| StackPanel | Other Stuff |
| PressButton1 | |
| PressButton2 | |
| PressButton3 | |
===========================================
我的问题是,目前GridSplitter只想在窗口的中心渲染,我希望标签列表明显更窄。标签面板的理想起始宽度与最宽的标签一样宽。
我已尝试测量用户控件的ActualWidth
,但始终将其设置为包含StackPanel的宽度。如果我尝试测量标签的宽度,那些似乎也决定拉伸到它们的最大可能宽度。似乎很荒谬,我必须经历预渲染标签文本的整个过程,以便了解当标签已经在标签上时我的标签应该有多宽,所以我假设我做错了。
如何在标签上找到文字的宽度,以便我可以移动GridSplitter以贴合左窗格?
答案 0 :(得分:0)
我假设你的“绘图”你有一个有两列的网格。您可以将第一列设置为自动宽度,并将堆栈面板放在那里。 将第二列设置为宽度1 *,创建一个GridSplitter并将其Grid.Column设置为1,为其设置固定宽度(我通常将其设置为10)并将HorizontalAlignment设置为Left,将VerticalAlignment设置为Stretch。 应该做的伎俩。