WPF Expander расширяется за сеткой - PullRequest
1 голос
/ 03 января 2011

У меня есть контроль экспандера в строке сетки. И я меняю размер экспандера по нажатию кнопки экспандера, чтобы максимизировать размер экспандера. А по состоянию коллапса я минимизирую размер расширителя. Проблема в том, что расширитель расширяется под строкой сетки. Есть ли способ заставить расширитель расширяться поверх любого элемента управления?

<Grid AllowDrop="False">
    <Grid.RowDefinitions>
        <RowDefinition Height="199*" />
        <RowDefinition Height="175*" />
    </Grid.RowDefinitions>
    <Grid Height="60" HorizontalAlignment="Left" Margin="21,26,0,0" Name="grid1" VerticalAlignment="Top" Width="550" Background="#FFE59E9E">
        <Label Content="Label" Height="28" HorizontalAlignment="Left" Margin="62,113,0,0" Name="label1" VerticalAlignment="Top" />
        <TextBox Height="23" HorizontalAlignment="Left" Margin="130,115,0,0" Name="textBox1" VerticalAlignment="Top" Width="120" Background="#FF2B1313" />
    </Grid>
    <Expander Name="exp" Expanded="exp_Expanded" Background="#FF3383A7" BorderThickness="4" BorderBrush="{x:Null}" FlowDirection="LeftToRight" Collapsed="exp_Collapsed" ExpandDirection="Left" Height="49" VerticalAlignment="Top" HorizontalAlignment="Right" Width="602" Margin="0,139,237,0">
        <DataGrid AutoGenerateColumns="False" Height="105" Name="dataGrid1" Width="200" HorizontalContentAlignment="Center" VerticalAlignment="Center" />
    </Expander>
</Grid>


  private void exp_Expanded(object sender, RoutedEventArgs e)
    {
        var exp = (Expander) sender;
        //grid1.Width = 550;
       // grid1.Height = 40;

          exp.Width = 602;
         exp.Height = 300;


    }

    private void exp_Collapsed(object sender, RoutedEventArgs e)
    {
        var exp = (Expander)sender;

       // grid1.Height = 500;
        exp.Width = 602;
        exp.Height = 49;



    }

1 Ответ

2 голосов
/ 03 января 2011

Это потому, что вы установили Grid.RowDefinition для своего элемента управления Grid и не установили свойство Grid.Row для дочерних элементов управления

если не требуется удалить приведенный ниже код у вас xaml

<Grid.RowDefinitions>
    <RowDefinition Height="199*" />
    <RowDefinition Height="175*" />
</Grid.RowDefinitions>

или

Добавьте Grid.RowSpan свойство для вашего экспандера

<Expander Grid.RowSpan="2" Name="exp" Expanded="exp_Expanded"...

Вы можете проверить Учебное пособие по WPF для Grid Panel , чтобы узнать больше о том, как строки и столбцы для Grid Panel

...