Допустим, у меня есть список таможенного контроля:WPF Рендер контроль над другими
<ItemsControl>
<ItemsControl.ItemTemplate>
<DataTemplate>
<ctrl:AutoCompleteTextBox />
</DataTemplate>
</ItemsControl.ItemTemplate>
</StackPanel>
Эти элементы управления автозаполнения текстовые поля и я хочу перечислить, чтобы быть оказаны выше остальных элементов управления предложения.
Если я придумываю свой контроль, как это:
<UserControl>
<StackPanel Orientation="Vertical">
<TextBox Name="Value" />
<ListView Name="Suggestions" />
</StackPanel>
</UserControl>
Когда я заполнить мой ListView, то StackPanel растет, а другой автозаполнения просто сдвинут. Я хочу, чтобы они были охвачены списком предложений.
Я пытался использовать холст с Panel.ZIndex набор свойств к 2000 году, но холст всегда оказывается ниже других элементов:
Вот XAML:
<UserControl>
<StackPanel Orientation="Vertical">
<TextBox Name="Value" />
<Canvas Panel.ZIndex="2000">
<ListView Panel.ZIndex="2000" Name="Suggestions" />
</Canvas>
</StackPanel>
</UserControl>
Я также пытался использовать PopUp. Он хорошо работает, за исключением того, что всплывающее окно оказываются на верхней части экрана, даже если другое приложение получило фокус:
Вот является XAML:
<UserControl>
<StackPanel Orientation="Vertical">
<TextBox Name="Value" />
<PopUp IsOpen="false">
<ListView Name="Suggestions" />
</PopUp>
</StackPanel>
</UserControl>
Я открыт для любых других решение, если оно применимо к моему первоначальному требованию.
Я думаю, что ваша стеклянная панель прозрачна, и вы должны дать ей цвет фона. –
Nop, я тоже это пробовал. Как вы можете видеть, полоса прокрутки списка также находится за другими элементами управления. – fharreau
Я подозреваю, что вы должны установить свойство Panel.ZIndex вашего UserControl. В вашем самом верхнем текстовом поле автозаполнения есть самый маленький ZIndex, поэтому каждый элемент управления, который внутри этого UserControl, будет находиться под другим UserControls. Я думаю, вы должны установить ZIndext в UserControl, когда он получит фокус. –