2017-07-12 9 views
0

スタートアップ時にテキストがデフォルトの場合はすべて問題ありませんが、曲名を追加するとステータスが右に移動し、ステータスバーがエリア外になります。 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

マージンなしドックパネルが下にドッキングされていない、idkなぜ – Sheep

答えて

0

Widthを調整することができ、他の要素には影響しません列を固定しているだろうその方法マージン。 彼らは援助していない、彼らはどのように整列すべきかについて物事をあまり明らかにしない。

余白の値から、ステータスバーに左のラベル、中央のラベル、右の進捗バーが表示されるようにしたいと思います。

以下は、2番目のドッキングパネルでこれを行う方法を示しています。 ドックパネルは、サイズを子コンポーネントに報告する方法が一貫しているため、ここで理想的です。

このステータスパネルを別のDockPanelに配置する場合は、必要に応じてレンダリングする前にいくつかのことを行う必要があります。

第1に、メインドッキングパネルに内容が必要です。そうしないと、境界パネルが適切な場所にレンダリングされません。

第2に、LastChildFill=Trueを設定した場合は、メインコンテンツを最後のアイテムとして追加する必要があります。 メインのコンテンツを設定してステータスバーを追加した場合、下部にドッキングしていても、ステータスバーはまだパネルを埋めるように試みます。

私はコードスニペットをテストした後に更新しました(私の最初の試みはまっすぐタイプされたので、うまくいきませんでした)。

 <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は問題ありません。私は非常に不思議です。コードは何ですか?mode = 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に