2011-12-09 56 views
1

我试图在升级到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文章似乎有没有答案的问题,所以我想我会先在这里尝试。

+0

我多么愚蠢,它根本不需要在二级网格中...... – Chris

回答

0

菜单控件完全适用于LayoutRoot网格,试图将其放置在子网格内导致问题。