簡體   English   中英

C#WPF XAML狀態欄對齊

[英]C# WPF XAML status bar alignment

當文本在啟動之前默認為默認時,一切都很好,但是當我添加歌曲名稱時,狀態會移到右側,狀態欄不在區域內。

<StatusBar Margin="0,730,0,0" DockPanel.Dock="Bottom" >
        <WrapPanel >
        <Label x:Name="tytulUtworu" HorizontalAlignment="Left">music: none </Label>
        <Label x:Name="lblstatusPolaczenia" Margin="200,0,0,0" HorizontalAlignment="Center">status: disconnected</Label>
        <ProgressBar Width="100" Height="15" Value="50" Margin="200,0,0,0" HorizontalAlignment="Right" />
        </WrapPanel>
    </StatusBar>

我該如何修理?

代替使用WrapPanel ,請嘗試使用Grid 這樣,您將獲得固定的列,如果添加了文本,這些列將不會影響其他元素

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition />
        <ColumnDefinition />
        <ColumnDefinition />
    </Grid.ColumnDefinitions>

    <Label x:Name="tytulUtworu" HorizontalAlignment="Left">music: none </Label>
    <Label x:Name="lblstatusPolaczenia" Grid.Column="1" HorizontalAlignment="Center">status: disconnected</Label>
    <ProgressBar Width="100" Height="15" Value="50" Grid.Column="2" HorizontalAlignment="Right" />
</Grid>

您可以調整每個ColumnDefinition上的Width ,以獲得更佳尺寸的列供您使用

首先,放棄利潤。 他們無濟於事,只是使事情在如何對齊方面不太明顯。

根據您的邊距值,我猜測您希望狀態欄在左側顯示標簽,在中間顯示另一個標簽,在右側顯示進度條。

下面顯示了如何使用第二個擴展塢面板執行此操作。 此處的Dock面板非常理想,因為它向子組件報告尺寸的方式是一致的。

如果要將此狀態面板放置在另一個DockPanel ,則需要做一些事情,然后它才能根據需要呈現。

首先,您的主停靠面板必須具有內容,否則邊界面板將無法在正確的位置渲染。

其次,如果您設置LastChildFill=True ,則必須將主要內容添加為最后一項。 如果設置了主要內容,則添加狀態欄,即使已將其停靠在底部,它仍會嘗試填充面板。

在測試完代碼片段后,我已經對其進行了更新(我的第一次嘗試是直接輸入SO,抱歉,它沒有用)。

        <StatusBar DockPanel.Dock="Bottom"
               Name="statusBar"
               Height="50"
               HorizontalAlignment="Stretch"
               HorizontalContentAlignment="Stretch">
        <DockPanel LastChildFill="True"
                   Width="{Binding ActualWidth, ElementName=statusBar, Mode=OneWay}">
            <ProgressBar DockPanel.Dock="Right"
                         Width="100"
                         Value="50" />
            <Label x:Name="tytulUtworu"
                   DockPanel.Dock="Left"
                   ContentStringFormat="music: {0}"
                   Content="none" />
            <Label x:Name="lblstatusPolaczenia" 
                   HorizontalContentAlignment="Center"
                   Content="disconnected"
                   ContentStringFormat="status: {0}" />
        </DockPanel>
    </StatusBar>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM