WPF: изменение размера стековых панелей с изображениями во время выполнения

Я пытаюсь создать приложение для самолета-симулятора полета, в котором пользователь может задать положение и размер окна набора всплывающих радиодисплеев, как показано на первом снимке экрана.

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

Второе изображение


person JB3DG    schedule 21.02.2018    source источник
comment
это потому, что ViewBox изменит свой элемент управления, который он содержит, чтобы максимально заполнить доступную область   -  person cuongtd    schedule 21.02.2018
comment
Это все еще происходит даже при удалении ViewBox. Изображения настаивают на равномерном масштабировании, а не только на одной оси.   -  person JB3DG    schedule 21.02.2018
comment
У кого-нибудь еще есть идеи?   -  person JB3DG    schedule 22.02.2018


Ответы (1)


Хорошо, решение состояло в том, чтобы использовать сетку и установить Grid.Row, которому было назначено изображение. Затем, масштабируя сетку, я мог получить желаемый эффект.

XAML:

        <Grid x:Name="spGrid" Height="154" Width="101" Margin="0,0,0,0" HorizontalAlignment="Left" VerticalAlignment="Top" MouseDown="PosStart" MouseMove="PosDelta" MouseUp="PosEnd">
            <Grid.RowDefinitions>
                <RowDefinition x:Name="spRow1" Height="*" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition x:Name="spCol1" Width="*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>
            <GridSplitter Grid.Column="1" Grid.RowSpan="5" Width="1"  HorizontalAlignment="Right" VerticalAlignment="Stretch" DragDelta="PanelXDelta" DragStarted="PanelXStart"/>
            <GridSplitter Grid.Row="1" Grid.ColumnSpan="4" Height="1" HorizontalAlignment="Stretch" VerticalAlignment="Bottom" DragDelta="PanelYDelta" DragStarted="PanelYStart"/>
                <Grid Grid.Column="0" Grid.Row="0" x:Name="spStack" HorizontalAlignment="Stretch" Margin="0,0,0,0" VerticalAlignment="Stretch">
                    <Grid.RowDefinitions>
                        <RowDefinition/>
                        <RowDefinition/>
                        <RowDefinition/>
                        <RowDefinition/>
                        <RowDefinition/>
                        <RowDefinition/>
                    </Grid.RowDefinitions>
                    <Image Grid.Row="0" x:Name="imgKMA30" Source="UI/KMA30.jpg" StretchDirection="Both" Stretch="Fill" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
                    <Image Grid.Row="1" x:Name="imgKR165A" Source="UI/KX165A.jpg" StretchDirection="Both" Stretch="Fill" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
                    <Image Grid.Row="2" x:Name="imgKX165" Source="UI/KX165.jpg" StretchDirection="Both" Stretch="Fill" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
                    <Image Grid.Row="3" x:Name="imgKN62A" Source="UI/KN62A.jpg" StretchDirection="Both" Stretch="Fill" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
                    <Image Grid.Row="4" x:Name="imgKR87" Source="UI/KR87.jpg" StretchDirection="Both" Stretch="Fill" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
                    <Image Grid.Row="5" x:Name="imgKT74" Source="UI/KT74.jpg" StretchDirection="Both" Stretch="Fill" HorizontalAlignment="Stretch" VerticalAlignment="Stretch"/>
                </Grid>
        </Grid>

C#:

    private void PanelXDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
    {
        spGrid.Width += e.HorizontalChange;
    }

    private void PanelYDelta(object sender, System.Windows.Controls.Primitives.DragDeltaEventArgs e)
    {
        spGrid.Height += e.VerticalChange;
    }
person JB3DG    schedule 25.02.2018