我的StackPanel
大于其父Grid
。我确认使用Snoop WPF Spy。 Width
已设置为默认值。如何限制它?
我不喜欢ViewBox
解决方案,因为它缩小了我的文字,我希望它被包装/修剪。
按要求编辑 XAML
<Grid>
<StackPanel
Orientation="Horizontal">
<Border
BorderBrush="Black"
BorderThickness="1"
Width="{ Binding BorderScreenShot }"
Margin="0,-8,0,0">
<Image
ToolTip="Some Text"
Cursor="Hand"
Source="{ Binding Image }"
Stretch="Fill"
Visibility="{ Binding ImageVisibility }"
MouseLeftButtonUp="Image_MouseLeftButtonUp" />
</Border>
<StackPanel
Orientation="Vertical"
Margin="10,0,0,0">
<TextBlock
Text="{ Binding Name }"
TextWrapping="Wrap" />
<TextBlock
Text="{ Binding LongText }"
TextWrapping="Wrap" />
<StackPanel
Orientation="Horizontal">
<TextBlock
Text="{ Binding Category }" />
<TextBlock
Text="{ Binding Version }" />
</StackPanel>
</StackPanel>
</StackPanel>
</Grid>
答案 0 :(得分:7)
您可以尝试将StackPanel
更改为DockPanel
(对孩子们有适当的DockPanel.Dock
属性)。
这将模仿StackPanel的效果,但允许对子项进行约束。
或者,使用WrapPanel而不是StackPanel。
StackPanels具有无限的客户端大小,因此如果没有设置显式维度,StackPanel内部的任何内容都不会包装或修剪(相反,StackPanel只会增长以适应内容)。
答案 1 :(得分:0)
子元素不可能大于它的父元素,除非它的内容更大。如果您想修剪文字,可以使用TextBlock.TextTrimming = WordEllipsis/CharacterEllipsis
。如果我对问题的解释是正确的,这将产生所需的行为。
但是,StackPanel
无法正常使用。如其他答案所示,您可以使用DockPanel
或Grid
来安排内容。
或者,您可以将StackPanel
包裹在ScrollViewer
中并使用滚动条来处理溢出。
<强>更新强> 这应该解决它
<DockPanel>
<Border
DockPanel.Dock="Left"
BorderBrush="Black"
BorderThickness="1"
Width="{ Binding BorderScreenShot }"
Margin="0,-8,0,0">
<Image ToolTip="Some Text" Cursor="Hand" Source="{ Binding Image }" Stretch="Fill" Visibility="{ Binding ImageVisibility }" MouseLeftButtonUp="Image_MouseLeftButtonUp" />
</Border>
<StackPanel
DockPanel.Dock="Bottom"
Orientation="Horizontal">
<TextBlock Text="{ Binding Category }" />
<TextBlock Text="{ Binding Version }" />
</StackPanel>
<TextBlock
DockPanel.Dock="Top"
Text="{ Binding Name }"
TextWrapping="Wrap" />
<TextBlock
Text="{ Binding LongText }"
TextTrimming="WordEllipsis"
TextWrapping="Wrap" />
</DockPanel>
答案 2 :(得分:0)
如果您不想缩小内容,实际上没有任何其他方法可以限制它 - 特别是因为涉及图像。
这几乎让你留下ScrollViewer
,这是专为这种情况而设计的。就个人而言,我喜欢将放大/缩小功能与ScrollViewer功能相结合。它为用户提供了查看内容的最佳选择。