Как перекрыть элемент в wpf?

278
16 мая 2022, 15:40

Expander раскрывается над TextBox. Это затрудняет выбор элемента из списка. Т.е. когда курсор наведен на элемент списка, на него реагирует TextBox и выделить невозможно пока курсор в пересечении элемента экспандера и текстбокса. Как сделать так, чтобы TextBox был "неактивен" во время раскрытия экспандера?

Ниже код контрола c Экспандером и Главного окна

<Grid Background="#4D4D4D">
    <Border Grid.Column="0" BorderThickness="0,7.7,0,0" BorderBrush="{StaticResource ShadowTop}">
        <ListBoxItem x:Name="ListViewItemMenu" 
                     VerticalContentAlignment="Center" 
                     HorizontalContentAlignment="Center"
                     FontSize="16"
                     Content="{Binding Path=Header}"/>
    </Border>
    <Expander x:Name="ExpanderMenu" 
              Header="{Binding Path=Header}" 
              Background="{x:Null}"
              BorderThickness="0,7.7,0,0"
              Opacity="1">
        <ListView x:Name="ListViewMenu" 
                  ItemsSource="{Binding Path=SubItems}" 
                  Foreground="White"
                  Opacity="1"
                  SelectionChanged="ListViewMenu_SelectionChanged">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <TextBlock Text="{Binding Path=Name}"
                               Opacity="1"/>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </Expander>
</Grid>

Фрагмент кода MainWindow. Контролы добавляются в стекпанели в codebehind

<Canvas x:Name="CanvasRight" Grid.Row="1" Grid.Column="1">
    <!--панель меню-->
    <StackPanel Canvas.Top="0"  Canvas.ZIndex="1" Orientation="Horizontal">
        <StackPanel x:Name="menuPanel1" />
        <StackPanel x:Name="menuPanel2" />
        <StackPanel x:Name="menuPanel3" />
        <StackPanel x:Name="menuPanel4" />
    </StackPanel>
    <!--область страницы-->
    <StackPanel Margin="0" Canvas.Top="60" Canvas.ZIndex="2" x:Name="mainStackPanel" Orientation="Horizontal">
        <TextBox IsReadOnly="True" Width="500">fffffffffffffffffffffffffffffeeeeeeeeeeeeeefefeferfergergvegergergerge</TextBox>
    </StackPanel>
</Canvas>
Answer 1

@aepot в комментариях дал правильное решение. Нужно было убрать Canvas.ZIndex из StackPanel.

<StackPanel Margin="0" Canvas.Top="60" x:Name="mainStackPanel" Orientation="Horizontal">
    <TextBox IsReadOnly="True" Width="500">fffffffffffffffffffffffffffffeeeeeeeeeeeeeefefeferfergergvegergergerge</TextBox>
</StackPanel>
READ ALSO
Не могу синхронизировать потоки c#

Не могу синхронизировать потоки c#

Задание: Необходимо разработать программу, в которой было реализовано два потока (нити)Эти потоки должны запускаться одновременно и сортировать...

140
Index was outside the bounds of the array

Index was outside the bounds of the array

Если честно, даже предположений нет в чём ошибкаВозникает после запуска в одном из двух мест, в зависимости от того, какое из чисел больше

303
Цикл по получению значения из JSON

Цикл по получению значения из JSON

Есть такой код, который работает до получения финального значения из JSONСам файл выглядит примерно вот так:

180
создать блок(меню ul&gt;li) в js без использования html

создать блок(меню ul>li) в js без использования html

Нужно сделать меню(ul>li*5) в js без html, изначально body в файле indexhtml должен быть пустой, все необходимые элементы генерируются с использованием...

216