Как я могу разместить слайдер в StackPanel, который увеличивает свой размер при изменении размера окна? - PullRequest
0 голосов
/ 16 июня 2020

В настоящее время я настраиваю приложение в C# с WPF и хотел бы иметь горизонтальную StackPanel, содержащую несколько кнопок и ползунок. При изменении размера окна кнопки не должны изменять свой размер, а вместо этого ползунок должен заполнять пространство:

StackPanel

С моим текущим кодом ползунок не имеет ширины. Он очень тонкий. Пытался получить ширину привязкой панели стека. Причина, по которой я поместил слайдер в StackPanel, заключается в том, что сам слайдер не использует остальную часть размера рядом с кнопками. Мой код XAML следующий:

<StackPanel Name="controlPanel"  Grid.Row="1" Grid.ColumnSpan="2" Orientation="Horizontal">
     <StackPanel Name="buttonPanel" Orientation="Horizontal">
           <Button x:Name="btnTlPl" Content="PL" Height="25" Width="25" BorderBrush="Green" BorderThickness="2" Margin="1"/>
           <Button x:Name="btnTlSt" Content="ST" Height="25" Width="25" BorderBrush="Red" BorderThickness="2" Margin="1"/>
           <Button x:Name="btnTlFw" Content="FW" Height="25" Width="25" BorderBrush="LightSalmon" BorderThickness="2" Margin="1"/>
           <Button x:Name="btnTlBw" Content="BW" Height="25" Width="25" BorderBrush="LightSalmon" BorderThickness="2" Margin="1"/>
     </StackPanel>
     <StackPanel Name="sliderPanel" Orientation="Horizontal">
           <Slider x:Name="sliderTopLeft" Margin="0,0,0,0" 
               Background="AliceBlue" Width="{Binding Path=ActualWidth, ElementName=sliderPanel}" Orientation="Horizontal" HorizontalAlignment="Right" 
               Value="0" Minimum="0" Maximum="19" 
               SmallChange="1" LargeChange="1"
               TickPlacement="BottomRight" TickFrequency="1" IsSnapToTickEnabled="True" ValueChanged="sliderTopLeft_ValueChanged"/>
     </StackPanel>
</StackPanel>

Есть предложения для меня?

1 Ответ

1 голос
/ 16 июня 2020

A DockPanel работает нормально. Также не забудьте удалить HorizontalAlignment="Right" на вашем Slider.

<DockPanel
    Name="controlPanel"
    Grid.Row="1"
    Grid.ColumnSpan="2"
    LastChildFill="True">
    <StackPanel
        Name="buttonPanel"
        DockPanel.Dock="Left"
        Orientation="Horizontal">
        <Button x:Name="btnTlPl"
            Width="25"
            Height="25"
            Margin="1"
            BorderBrush="Green"
            BorderThickness="2"
            Content="PL" />
        <Button x:Name="btnTlSt"
            Width="25"
            Height="25"
            Margin="1"
            BorderBrush="Red"
            BorderThickness="2"
            Content="ST" />
        <Button x:Name="btnTlFw"
            Width="25"
            Height="25"
            Margin="1"
            BorderBrush="LightSalmon"
            BorderThickness="2"
            Content="FW" />
        <Button x:Name="btnTlBw"
            Width="25"
            Height="25"
            Margin="1"
            BorderBrush="LightSalmon"
            BorderThickness="2"
            Content="BW" />
    </StackPanel>
    <Slider x:Name="sliderTopLeft"
        Margin="0,0,0,0"
        Background="AliceBlue"
        DockPanel.Dock="Left"
        IsSnapToTickEnabled="True"
        LargeChange="1"
        Maximum="19"
        Minimum="0"
        Orientation="Horizontal"
        SmallChange="1"
        TickFrequency="1"
        TickPlacement="BottomRight"
        Value="0" />
</DockPanel>

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...