我有StackPanel
需要包含绘制的背景。具体来说,我的StackPanel
需要具有增长的能力,矩形必须随StackPanel
一起增长,但必须在固定位置保持伪锚定到每一侧。
我尝试使用Canvas.Left
,Canvas.Right
,Canvas.Top
和Canvas.Bottom
附加属性,但到目前为止他们还没有工作。此外,这在Canvas对象中绘制时似乎有效,而不是在它们作为背景嵌入VisualBrush
集合时。如何在StackPanel
以下是我当前代码的状态。我尝试了各种方法,但似乎都没有。
我的代码:
<StackPanel DockPanel.Dock="Right" Orientation="Vertical" VerticalAlignment="Center">
<StackPanel.Background>
<VisualBrush Stretch="None">
<VisualBrush.Visual>
<Canvas Background="Magenta" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
Rectangle Fill="#FFDDECF7" Canvas.Left="20" Canvas.Top="20" Canvas.Bottom="20" Canvas.Right="0"/>
</Canvas>
</VisualBrush.Visual>
</VisualBrush>
</StackPanel.Background>
...
</StackPanel>
这目前无法呈现任何内容。我将画布背景设置为洋红色,这样我就可以看到它是否正在绘制,我甚至都没有看到它。其他尝试已经绘制了画布,但是,无论附加的画布属性设置如何,蓝色矩形总是被拉伸以填充窗口。
示例:
下面的图片是我想要的样本。我再次使用丑陋的洋红色来显示内部蓝色矩形的偏移。随着StackPanel的增大或缩小,矩形需要贴在顶部,左侧,右侧和底部。
答案 0 :(得分:3)
我的建议是将stackpanel放在网格中:
<Grid DockPanel.Dock="Right" VerticalAlignment="Center" Background="Magenta">
<Rectangle Margin="20" Fill="#FFDDECF7"/>
<StackPanel Orientation="Vertical">
no background...
</StackPanel>
</Grid>
答案 1 :(得分:0)
将Canvas
换入ViewBox
,然后处理ViewBox
。据我所知Canvas
并不能很好地支持scalling。