如何避免将打开的Silverlight组合框下拉列表置于所有内容之上

如何避免将打开的Silverlight组合框下拉列表置于所有内容之上,silverlight,Silverlight,我有一个组合框,在失去焦点后,我设法保持下拉框打开。它填充了许多复选框。每当用户切换其中一个复选框时,整个应用程序都会通过调用数据服务进行更新。在此期间,我使用一个透明的覆盖矩形(位于整个Silverlight内容的顶部)和一个等待光标来阻止进一步的用户输入 我试着增加那个矩形的Canvas.ZIndex,让它覆盖所有东西。但是我的组合框的打开下拉列表总是在它上面 一个非常简单的例子说明了我的意思: <UserControl x:Class="ComboDropDownTest.Page"

我有一个组合框,在失去焦点后,我设法保持下拉框打开。它填充了许多复选框。每当用户切换其中一个复选框时,整个应用程序都会通过调用数据服务进行更新。在此期间,我使用一个透明的覆盖矩形(位于整个Silverlight内容的顶部)和一个等待光标来阻止进一步的用户输入

我试着增加那个矩形的Canvas.ZIndex,让它覆盖所有东西。但是我的组合框的打开下拉列表总是在它上面

一个非常简单的例子说明了我的意思:

<UserControl x:Class="ComboDropDownTest.Page"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Width="400" Height="300">
<Grid x:Name="LayoutRoot" Background="White">
<ComboBox Canvas.ZIndex="0" Height="40" VerticalAlignment="Top">
    <ComboBoxItem Content="ComboBoxItem1"/>
    <ComboBoxItem Content="ComboBoxItem2"/>
    <ComboBoxItem Content="ComboBoxItem3"/>
    <ComboBoxItem Content="ComboBoxItem4"/>
</ComboBox>
<Button Canvas.ZIndex="9999" Height="55" Margin="18,66,19,0" VerticalAlignment="Top" Content="Button"/>
</Grid>


当组合框打开时,下拉列表覆盖按钮,忽略ZIndex顺序。

发生这种情况的原因是,下拉列表是通过弹出窗口生成的(其本质上总是显示在所有其他内容之上)。我能想象的唯一改变的方法是修改ComboBox的ControlTemplate来改变下拉列表的容器。我没有测试它,但我敢打赌它是正确的解决方案