Как не допустить, чтобы открытый Silverlight ComboBox DropDown был на вершине всего - PullRequest
0 голосов
/ 11 января 2009

У меня есть ComboBox, который мне удалось сохранить открытым DropDown после LostFocus. Он заполнен рядом флажков. Всякий раз, когда пользователь переключает один из этих флажков, все приложение обновляется путем вызова DataService. В течение этого времени я блокирую дальнейший пользовательский ввод, используя прозрачный оверлейный прямоугольник (поверх всего содержимого Silverlight) с курсором ожидания.

Я пытался увеличить Canvas.ZIndex этого Rectangle, чтобы получить его поверх всего. Но открытый DropDown моего ComboBox всегда поверх него.

Очень упрощенный пример показывает, что я имею в виду:

<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 закрывает Button, игнорируя порядок ZIndex.

1 Ответ

2 голосов
/ 12 января 2009

Причина, по которой это происходит, заключается в том, что выпадающий список генерируется с помощью всплывающего окна (которое всегда показывает все остальное по самой своей природе). Единственный способ представить это изменение - это изменить ControlTemplate ComboBox, чтобы изменить контейнер для выпадающего списка. Я не проверял это, но готов поспорить, что это правильное решение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...