2017-11-07 10 views
-1

私のWPFアプリケーションにグリッドがあります。このグリッドには2つの列と1つの行があります。今WPFグリッドの列の配置:最初から右へ、2番目から左側

、私は以下のように左へ右の2列目のコンテンツに最初の列のコンテンツを揃えるしようとしています:

----------------------------------------------------- 
|    ProgressControlSpinner|"Loading..."| 
----------------------------------------------------- 

代わりに私が取得:私が欲しい

----------------------------------------------------- 
|ProgressControlSpinner|"Loading..."    | 
----------------------------------------------------- 

注意をテキストの幅に合わせて自動的に調整されます。 また、このグリッドは、それが含まれる外側のグリッド列に展開する必要があります。

マイグリッドは以下の通りである:

<Grid x:Name="MyGrid" Grid.Column="1" Margin="3" Visibility="Collapsed"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="*"/> 
     <ColumnDefinition Width="auto"/> 
    </Grid.ColumnDefinitions>      
    <controls:ProgressControlSpinner Grid.Column="0" Width="20" Height="20" HorizontalAlignment="Right"/> 
    <TextBlock Margin="3 0 0 0" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Left" Text="Loading..." /> 
</Grid> 

:このグリッドは、別の外側のグリッド内に含まれます。

+2

XAMLが正しいです。コードビハインドで何をしていますか?そのグリッドは外部コンテナの子ですが、そこに問題がある可能性があります。 2番目の*スクリーンショット*の空白はそれに属することができます(チェックするには 'Background'を設定できます)。もっとxamlを表示できますか? – Sinatr

+0

@Sinatrはい外のグリッドに問題がありました。列定義の幅が正しくありません。私の答えを見てください。 – user1624552

答えて

0

私は解決しました。内側のグリッドが含まれている列の幅を定義するとき、私の問題は外側のグリッドにありました。

私が持っていた:

<Grid Grid.Column="0" Grid.Row="0" Margin="10 10 10 5" HorizontalAlignment="Stretch"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="auto"></ColumnDefinition> 
     <ColumnDefinition Width="auto"></ColumnDefinition> 
     <ColumnDefinition Width="*"></ColumnDefinition> 
    </Grid.ColumnDefinitions> 

    <Grid x:Name="MyGrid" Grid.Column="1" Margin="3" Visibility="Collapsed"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="auto"/> 
     </Grid.ColumnDefinitions>      
     <controls:ProgressControlSpinner Grid.Column="0" Width="20" Height="20" HorizontalAlignment="Right"/> 
     <TextBlock Margin="3 0 0 0" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Left" Text="Loading..." /> 
    </Grid> 

</Grid> 

、正しいです:

<Grid Grid.Column="0" Grid.Row="0" Margin="10 10 10 5" HorizontalAlignment="Stretch"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="auto"></ColumnDefinition> 
     <ColumnDefinition Width="*"></ColumnDefinition> 
     <ColumnDefinition Width="auto"></ColumnDefinition> 
    </Grid.ColumnDefinitions> 


    <Grid x:Name="MyGrid" Grid.Column="1" Margin="3" Visibility="Collapsed"> 
     <Grid.ColumnDefinitions> 
      <ColumnDefinition Width="*"/> 
      <ColumnDefinition Width="auto"/> 
     </Grid.ColumnDefinitions>      
     <controls:ProgressControlSpinner Grid.Column="0" Width="20" Height="20" HorizontalAlignment="Right"/> 
     <TextBlock Margin="3 0 0 0" Grid.Column="1" VerticalAlignment="Center" HorizontalAlignment="Left" Text="Loading..." /> 
    </Grid> 

</Grid> 
関連する問題