2

3 つの項目が水平に配置されたパネルが必要です。私はこれを得ることができます:

<DockPanel LastChildFill="True">
    <TextBlock DockPanel.Dock="Left" Text="TextLeft" FontSize="40" Foreground="DarkOrange"/>
    <TextBlock DockPanel.Dock="Right" Text="TextRight" FontSize="40" Foreground="DarkOrange"/>
    <TextBlock Text="TextMiddle" FontSize="40" HorizontalAlignment="Center"/>
</DockPanel>

ここに画像の説明を入力

しかし、以下に示すように、幅がアイテム幅の合計よりも小さい場合、「TextRight」が「TextMiddle」ではなく「TextRight」になるようにしたいと思います。

ここに画像の説明を入力

注: TextMiddle に MinWidth を追加しようとしましたが、動作は変わりません。TextMiddle は LastChildFill="True" DockPanel の最後の子であるためです。

以下の XAMLでは、サイズ変更時に正しい動作が得られます (スペースが限られている場合は TextRight が食い込まれます)が、十分な幅がある場合、「TextMiddle」は使用可能なスペースの中央に配置されません。

<DockPanel LastChildFill="False" >
    <TextBlock DockPanel.Dock="Left" Text="TextLeft" FontSize="40" Foreground="DarkOrange"/>
    <TextBlock DockPanel.Dock="Left" Text="TextMiddle" FontSize="40" HorizontalAlignment="Center" />
    <TextBlock DockPanel.Dock="Right" Text="TextRight" FontSize="40" Foreground="DarkOrange"/>
</DockPanel>

ここに画像の説明を入力 ここに画像の説明を入力

おそらくアイテムの1つでサブパネルを使用することで、これには簡単な解決策があると確信していますが、正確にどのように理解することができません. どんな助けでも大歓迎です。

4

1 に答える 1

1

多分これはそれですか?

<Grid>
  <Grid.RowDefinitions>
    <RowDefinition />
  </Grid.RowDefinitions>
  <Grid.ColumnDefinitions>
    <ColumnDefinition Width="2*" MinWidth="350"/>
    <ColumnDefinition Width="*"/>
  </Grid.ColumnDefinitions>
  <UniformGrid HorizontalAlignment="Stretch" Rows="1">  
       <TextBlock Name="TextLeft" Text="TextLeft" FontSize="40" Foreground="DarkOrange"/>  
       <TextBlock Name="TextMiddle" Text="TextMiddle" FontSize="40" HorizontalAlignment="Center" />  
  </UniformGrid>
  <TextBlock Grid.Column="1" HorizontalAlignment="Right" Text="TextRight" FontSize="40" Foreground="DarkOrange"/>  
</Grid>   
于 2012-05-20T16:45:43.570 に答える