在wpf .net核心应用程序的应用程序中具有StackPanel的特定元素为中心

时间:2020-09-29 13:12:14

标签: c# wpf xaml alignment stackpanel

我目前正在开发一个地图应用程序,该应用程序底部具有一个浮动时间选择器:
enter image description here

到目前为止,太好了。底部的时间选择器通过以下方式实现:

<DockPanel Grid.ZIndex ="2" Height="Auto"  HorizontalAlignment ="Stretch" VerticalAlignment="Stretch">
    <StackPanel DockPanel.Dock="Bottom" HorizontalAlignment="Center"  VerticalAlignment="Bottom" Orientation="Horizontal" Margin="0,0,0,20">
        <!-- Play/Pause button for map time -->
        <Button x:Name="MapTime_PlayPause_Button" VerticalAlignment="Center" Height ="30" Width ="30" Margin="0,0,20,0" ScrollViewer.CanContentScroll="True" BorderBrush="{x:Null}" Foreground="{x:Null}" >
            <Button.Background>
                <ImageBrush ImageSource="/play_Button_40x40.png"/>
            </Button.Background>
        </Button>
        <!-- Map Time Slider -->
        <Slider x:Name="MapTime_Slider" VerticalAlignment="Center" HorizontalAlignment="Center" Width ="200" SmallChange="1" Minimum="-55" Maximum="0" Value="-55" TickPlacement="BottomRight" ValueChanged="MapTime_Slider_ValueChanged" />
        <!-- Map Time Display -->
        <Label x:Name="MapTime_Label" Height="40" Foreground="#FF5AE00D" Background="#FF303030" Margin="10,0,0,0" Content="-55" FontSize="22" VerticalAlignment="Center"/>
    </StackPanel>
</DockPanel>

问题如下:整个堆栈面板在屏幕上居中-很好。 一旦使用滑块,就会出现问题。滑块更新其右侧的MapTime_Label。由于数量的增加或减少,标签的宽度会发生变化。 因此,整个堆栈面板的对齐方式发生了变化,并且滑块变得完全不可预测:

enter image description here

请注意gif开头的“播放”按钮如何位于湖的右侧。一旦我使用滑块并更改了数字,它就会跳到湖的左侧。

最后,我将使用整数而不是浮点数。上面的例子夸大了这个问题。使用整数时,在从-100(4个字符)到-99(3个字符)或-1(2个字符)到0(1个字符)等数字长度之间进行转换时,我仍然遇到问题

有什么想法让滑块位于屏幕中央,同时让按钮和标签保持原样环绕?

0 个答案:

没有答案
相关问题