Как показать элемент управления поверх и выше среди всех элементов управления wpf

#.net #wpf #controls #z-index

#.net #wpf #элементы управления #z-индекс

Вопрос:

У меня есть главное окно, которое состоит из нескольких пользовательских элементов управления.как показано ниже

 <Grid>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                    </Grid.ColumnDefinitions>
                    <StackPanel Grid.Row="0">
                        <controls:FileControl x:Name="FileControl" />
                        <controls:FControl x:Name="FControl"/>
                    </StackPanel>
                    <controls:MessagesControl Grid.Row="1" x:Name="MessagesControl" />
                </Grid> 
  

Теперь внутри FControl у меня есть панель стека, которая состоит из множества элементов управления, как показано ниже, и окна со списком, которое видно при вводе чего-либо в текстовое поле, например, автозаполнение.

 <Expander>
<StackPanel>
<textBox></textBox>
<ComboBox></ComboBox>
  <ListBox Panel.ZIndex="100" ItemsSource="{Binding Collection}" SelectedIndex="{Binding Path=SelectedItemIndex, Mode=TwoWay}"  Visibility="{Binding VisibiltyAttr}" HorizontalAlignment="Center" VerticalAlignment="Bottom">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding}">
                            <i:Interaction.Triggers>
                            <i:EventTrigger EventName="MouseLeftButtonUp">
                                <i:InvokeCommandAction  Command="{Binding RelativeSource={RelativeSource AncestorType=ItemsControl}, 
                                        Path=DataContext.SelectionCommand}"  CommandParameter="{Binding}"></i:InvokeCommandAction>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>
                        </TextBlock>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>
        </StackPanel>
    </Expander>
  

Теперь проблема в том, что этот список занимает место, когда он виден в окне. Я хочу показать это поле списка для отображения поверх всех элементов управления, включая другие пользовательские элементы управления, которые находятся в главном окне.
Как показать, что этот список перекрывает другие элементы управления.Пожалуйста, предложите решения, я попробовал z-index в listbox, но не сработал.

Комментарии:

1. Вы хотите, чтобы он всплывал при необходимости? Сделайте это отдельным окном.

2. Нет ли решения для этого в том же usercontrol? я выполнил все кодирование в той же viewmodel.

3. Вы могли бы поместить список во всплывающее окно или украсить. Или просто поверх всего остального, переместив его во внешнюю сетку окна. Переключите его видимость между свернутым и видимым.