如何避免打开Silverlight ComboBox DropDown在所有内容之上

时间:2009-01-11 10:12:31

标签: silverlight

我有一个ComboBox,我设法在LostFocus之后保持DropDown打开。它上面有许多CheckBoxes。每当用户切换其中一个CheckBox时,通过调用DataService来更新整个应用程序。在此期间,我使用透明覆盖矩形(在整个Silverlight内容之上)使用等待光标阻止进一步的用户输入。

我尝试增加该Rectangle的Canvas.ZIndex以使其在所有内容之上。但是我的ComboBox的开放式DropDown始终位于它之上。

一个非常简单的例子显示了我的意思:

<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>

当ComboBox打开时,DropDown会覆盖按钮,忽略ZIndex顺序。

1 个答案:

答案 0 :(得分:2)

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