我正在尝试用this one替换我们的Silverlight应用程序中的Silverlight 2时代第三方菜单控件,升级到VS2010后,Silverlight 4打破了第三方控件,供应商告诉我我们购买的版本无法在Silverlight 4上运行。我已经设法用标准版替换了我们使用的所有其他控件,但是没有标准的Silverlight菜单控件。我认为替换是相当简单的,但显然我的XAML技能不能胜任任务(注意:我自己没有编写应用程序,我继承了它)。
Silverlight应用程序包含用于导航的Windows应用程序样式顶部菜单栏和内容窗格。菜单应显示与内容重叠的下拉菜单(例如,它将显示在VS中的代码上)。
我遇到的问题是,如果我将菜单和内容放在一个网格的不同单元格中,菜单会被裁剪到其网格单元格中(以便在单击时不显示下拉菜单),但是如果我添加了一个带有两个具有不同z索引的网格的画布我可以正确显示菜单(重叠内容),但应用程序不会调整大小以适应浏览器窗口。
即。如果我这样设置菜单就会被裁剪(这是简化的XAML,试图解释我的意思,我试图不排除任何重要的属性,但可能有):
<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>
如果我像这样铺设它菜单很好但控件没有填满窗口(添加背景颜色表示画布拉伸以填充网格,但其子网格不填充它,但是包含菜单控件的网格将在显示下拉菜单时调整大小以包含菜单控件:
<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文章似乎没有回答的问题,所以我想我先在这里试试。
答案 0 :(得分:0)
菜单控件在LayoutRoot网格中完美运行,尝试将其放置在子网格中是导致问题的原因。