横向拉伸WPF画布

9
我该如何使一个具有可变宽度的Canvas水平拉伸至最大?这是父级Canvas,所以它没有父级,只有子级。
XAML源代码:它在Blend中显示 http://resopollution.com/xaml.txt
5个回答

15

使用Grid作为您的UI顶级元素 - 它将拉伸以填充其容器。然后在Grid内放置一个Canvas,并将其HorizontalAlignment="Stretch",它将按照您想要的方式运行。

<Grid xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Canvas Background="Blue"/>
</Grid>

这个对我有用。关键是你的顶级UI元素。虽然Grid默认填充所有可用空间,但Canvas只占据其内容所需的空间。


1
你是如何进行测试的?我把这个粘贴到kaxaml中,它对我有效,所以你不需要x:class属性:<Grid   xmlns ="http://schemas.microsoft.com/winfx/2006/xaml/presentation"   xmlns:x ="" rel = "nofollow noreferrer">http://schemas.microsoft.com/winfx/2006/xaml">   <Canvas Background ="蓝色"/> </Grid> - James Cadd
1
哦,这表明HorizontalAlignment=Stretch也是不必要的。 - James Cadd
嗯,如果我只使用你的代码,你的例子就可以工作,但是当我尝试将我的整个视频播放器和浏览器预览的代码包装在 GRID 标签内时,一切都消失了。我只看到一个白色背景。也没有 XAML 错误。 - resopollution
1
你能否发布一个不可用的Xaml的完整示例?第一篇帖子中的Xaml看起来不完整,但如果我能够重现错误,我可能可以提供帮助。 - James Cadd
2
首先,很棒的播放器!问题是根元素是一个画布,在重新阅读你的问题后我意识到这一点。我使用你发布的代码并将父画布的背景设置为蓝色进行测试。然后,在一个父网格中包裹了该画布并删除其宽度和高度属性。然后,我在屏幕的左上角看到了一个小黑色媒体播放器,并且屏幕的其余部分填充了蓝色。画布不会自动拉伸以填满父级除非您将其放置在网格中。默认情况下,它们只有其内部内容的大小。希望对你有帮助! - James Cadd
显示剩余4条评论

4
我猜你已经尝试过了: canvas.HorizontalAlignment = HorizontalAlignment.Stretch 如果这行不起作用,那么你可以将 canvas 的 WidthHeight 属性绑定到包含窗口的 ActualWidthActualHeight 属性。

canvas.HorizontalAlignment = HorizontalAlignment.Stretch 是在 C# 代码中完成的吗?我只能访问 XAML。而且我也没有包含的窗口 =(. 每当我执行绑定元素时,我的 Silverlight 应用程序就会崩溃。 - resopollution
1
有一点晚了,但对于任何遇到同样问题的人:在XAML代码中使用<Canvas HorizontalAlignment="Stretch">在我的情况下完全有效。这使您免于将每个画布装箱到网格中(特别是如果您有很多画布)。 - Philip Daubmeier

1
你可以使用DockPanel来让它填充可用的宽度。在DockPanel控件列表中的最后一个项目将自动拉伸以填充剩余空间。
<DockPanel>
   <Canvas />
</DockPanel>

有没有快速的方法来处理<Canvas>标签? - resopollution
我尝试移除高度和宽度属性,但所有东西都消失了。 - resopollution

1
< p > 画布应该自动完成这个操作,除非您手动设置高度和/或宽度。您试图将画布放在什么样的控件上?您能发布您的代码吗?< /p >

我已经发布了我的代码。Canvas是整个应用程序的主要父元素。 - resopollution
我尝试移除高度和宽度属性,但是所有东西都消失了。 - resopollution

1
问题在于您指定了HeightWidth。如果没有这些属性,控件可能会在设计器中消失,但将画布插入到另一个控件时,它应该会自适应大小。
如果我没记错的话,下一个版本的WPF将具有“DesignWidth”和“DesignHeight”属性,允许您在设计器中显示控件并给定大小,而不影响将其插入到其他控件时的测量。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接