我试图在升级到VS2010并且Silverlight 4打破了第三方控件并且供应商通知我后,在我们的Silverlight应用程序中用this one替换了Silverlight 2时代的第三方菜单栏控件我们购买的版本将无法在Silverlight 4上运行。我已经设法将我们使用的所有其他控件替换为标准版本,但没有标准的Silverlight菜单控件。我认为这将是相当直接的取代,但显然我的XAML技能不能完成任务(注意:我没有自己编写应用程序,我继承了它)。Silverlight菜单控件布局问题
Silverlight应用程序由用于导航的Windows应用程序样式顶级菜单栏和一个内容窗格组成。菜单应该显示与内容重叠的下拉菜单(例如,它将显示在VS中的代码中)。
我的问题是,如果我把菜单和内容放在一个网格的不同单元格中,菜单会被裁剪到其网格单元格内(这样点击时下拉菜单就不会显示),但如果我添加一个具有2个具有不同z索引的网格的画布,我可以让菜单正确显示(重叠内容),但应用程序不会调整大小以适合浏览器窗口。
<Grid x:Name="LayoutRoot">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<slm:SLMenu Grid.Row="0" Grid.Column="0"/>
<StackPanel x:name="Content" Grid.Row="1" Grid.Column="0" />
</Grid>
</Grid>
:
即菜单,如果我躺在出来这样的(这是简化的XAML来尝试解释一下我的意思是,我试图不排除任何重要的属性,但可能有)被裁剪
如果我像这样布置它,菜单很好,但控件不会填充窗口(添加背景颜色表示画布拉伸以填充网格,但其子网格不填充网格,但网格包含菜单控件将调整大小以包含菜单控件,当它显示下拉菜单时):
<Grid x:Name="LayoutRoot">
<Grid HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<Canvas>
<Grid Canvas.ZIndex="1" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<!-- define grid with 2 rows, one the height of the menu -->
<slm:SLMenu Grid.Row="0" Grid.Column="0" />
</Grid>
<Grid Canvas.ZIndex="0" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
<!-- define grid with 2 rows, one the height of the menu -->
<StackPanel x:name="Content" Grid.Row="1" Grid.Column="0" />
</Grid>
</Grid>
</Grid>
我更喜欢用第一个布局修复它,因为这是以前的工作方式。我试着在菜单控制本身上设置Z-index值,但是我没有做任何事情似乎让它跳过了网格单元格的边界。
第三方控件没有重叠其网格单元的问题,所以我在做这个错误是什么?
这个新的菜单控件发布的CodeProject文章似乎有没有答案的问题,所以我想我会先在这里尝试。
我多么愚蠢,它根本不需要在二级网格中...... – Chris