2017-07-12 76 views
0

當啓動文本爲默認值時,一切正常before,但是當我添加歌曲名稱時,狀態正在向右移動,而狀態欄位於區域之外。 afterC#WPF XAML狀態欄對齊

<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> 

我該如何修復?

+0

當面板停靠在窗口底部時,爲什麼會有這麼大的邊距定義?當然,對接就足夠了,你不需要頂部有730像素的邊距? – Alex

+0

無邊距dockpanel沒有停靠在底部,idk爲什麼 – Sheep

回答

0

首先,溝邊際。 他們沒有幫助,他們只是讓事情不太明顯,他們應該如何對齊。

從您的保證金值中,我猜你想要狀態欄顯示左側的標籤,中間的另一個,右側的進度條。

下面顯示瞭如何使用第二個停靠面板完成此操作。 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> 
+0

謝謝,但它無法正常工作https://ibb.co/cVHOpa – Sheep

+0

現在試試這個片段。 – Alex

+0

隨着長曲名稱它的中心地位向右移動),但progressBar很好。我很好奇代碼寬度....模式= OneWay「do(?)https://ibb.co/drJ4Ua – Sheep

0

而不是使用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以獲得更好的規模列供您使用