Поведение экспандера должно частично расширяться поверх верхнего содержимого - PullRequest
0 голосов
/ 07 марта 2012

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

Что мне нужно, чтобы на экране было две области, с какой-то кнопкой в ​​нижней области. При нажатии кнопки эта область расширяется вверх, но лишь частично покрывает верхнюю область.

Я рассмотрел использование элемента управления Expander, но переопределенная область «расширения» может быть только 100%, где мне нужно, чтобы часть верхней панели оставалась видимой. Повторное нажатие на кнопку должно вернуться в предыдущее состояние разделения экрана.

Я думал о взгляде на PopUp, но я уверен, что должен быть лучший способ.

Есть идеи?

Спасибо

Kris

Ответы [ 2 ]

0 голосов
/ 07 марта 2012

Это увеличит текстовое поле.Вам предоставят возможность щелкнуть кнопкой, чтобы уменьшить ТБ после ее расширения.

<Window.Resources>
    <Storyboard x:Name="sbGrow" x:Key="sbGrow">
        <DoubleAnimation Storyboard.TargetName="tbGrow"
                                    Storyboard.TargetProperty="Height"
                                    From="100" To="200" />
    </Storyboard>
</Window.Resources>

<Grid Name="test">
    <Grid.RowDefinitions>
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />       
    </Grid.RowDefinitions>
    <Button Grid.Row="1" Click="btnGrowTB" Content="Grow TB"/>
    <TextBox Grid.Row="2" x:Name="tbGrow" BorderBrush="AliceBlue" BorderThickness="4" VerticalAlignment="Bottom" Height="100"/>
</Grid>

private void btnGrowTB(object sender, RoutedEventArgs e)
{
    Storyboard growtbStoryboard = (Storyboard)(FindResource("sbGrow"));
    growtbStoryboard.Begin();
}
0 голосов
/ 07 марта 2012

Я не уверен, правильно ли я понял, что вы хотите, но похоже, что-то вроде этого.

<Window x:Class="WpfApplication7.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="Auto"/>
                <ColumnDefinition Width="*"/>
            </Grid.ColumnDefinitions>
            <Expander Grid.Column="0" 
                    IsExpanded="False" 
                    ExpandDirection="Right">
                <ListBox 
                SelectionMode="Single" 
                Width="170" 
                VerticalContentAlignment="Top" 
                HorizontalAlignment="Left" 
                BorderBrush="Black"/>
            </Expander>

            <TextBox 
            Grid.Column="1" 
            HorizontalScrollBarVisibility="Auto" 
            VerticalScrollBarVisibility="Auto" 
            IsReadOnly="True" 
            BorderThickness="1" 
            Margin="0,3,3,3"/>
        </Grid>
    </Grid>
</Window>

Это существенно уменьшит размер TextBox при расширении меню.Когда вы закроете Меню, оно будет свернуто, и TextBox снова станет полноразмерным.

Вот еще один пример, который я использую для добавления «окна поиска», которое расширяется над TextBox.*

...