如何在画布内制作100%的网格宽度?这是一些简单的XAML,但它没有按预期工作。
<Canvas Background="MediumSlateBlue" Width="Auto" Height="Auto" >
<Grid x:Name="LayoutRoot" MouseMove="MainPage_MouseMove" Background="Beige" >
<TextBlock x:Name="lblDisplay" Height="24" HorizontalAlignment="Right" VerticalAlignment="Top" Width="128" Text="asdf" ></TextBlock>
</Grid>
</Canvas>
我不明白为什么我的网格不占用太多空间,因为它可以得到它的手!我甚至尝试添加宽度为100 *的单行和列定义,但我的网格仍然只占用与其包含的标签相同的空间。我们的目标是拥有一个带有网格子画布的画布,占据100%的宽度和高度。这很重要,因为我需要在浏览器调整大小时调整silverlight的大小。
答案 0 :(得分:3)
Canvas使用绝对定位来展示其内容。它与Windows Forms的工作方式更为相似,因为所有元素都必须指定顶部,左侧,宽度和高度。
您可以通过将Canvas替换为未定义行/列的Grid并使用边距放置子元素来实现类似的功能。
答案 1 :(得分:2)
看起来我在这里找到了解决方案
http://forums.silverlight.net/forums/t/13415.aspx
我调整了代码,以便在调整内容大小时自动调整网格大小。这将允许我使用Canvas.LeftProperty绝对定位元素并保持水平/垂直对齐元素的位置。
我认为只使用网格作为主要布局,但是如果需要为对象设置动画,则无法设置边距。此外,在mousemove事件期间设置边距Left和Top不会将我的元素准确定位到光标位置。
答案 2 :(得分:0)
还要检查以确保您的表单实际上是在拉伸Silverlight应用程序。
<form id="form1" runat="server" style="height:100%">
<div id="silverlightControlHost">
<object data="data:application/x-silverlight-2," type="application/x-silverlight-2" width="100%" height="100%">
<param name="source" value="clientbin/MyApp.xap"/>
<param name="onError" value="onSilverlightError" />
<param name="background" value="white" />
<param name="minRuntimeVersion" value="3.0.40818.0" />
<param name="autoUpgrade" value="true" />
<a href="http://go.microsoft.com/fwlink/?LinkID=149156&v=3.0.40818.0" style="text-decoration:none">
<img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style:none"/>
</a>
</object><iframe id="_sl_historyFrame" style="visibility:hidden;height:0px;width:0px;border:0px"></iframe></div>
</form>