2012-02-14 4 views
0

グリッドに2つの列を表示したいとします。最初のテキストブロックは、それを保持する行よりも長いテキストブロックです。 2番目はボタンです。できるだけ多くのスペースをテキストブロックに与える方法がありますが、ボタンがすぐに続く余地は残していますか?Silverlight xaml Gridの列が行全体を占めないようにするにはどうすればよいですか?

次のコードを使用すると、グリッドの表示可能領域外にテキストブロックがボタンを押し込むことがあります。

<Grid > 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="Auto" /> 
    </Grid.ColumnDefinitions> 
    <TextBlock Grid.Column="0" Text="{Binding Description}" HorizontalAlignment="Stretch" /> 
    <Button Margin="4,0" Height="0" Width="16" Grid.Column="1" MinWidth="20" VerticalAlignment="Center" /> 
</Grid> 

私は、最初の列定義の幅=「*」を設定しようとしましたが、私は次のテキストにそれをしたいときにボタンを押すと、行の最後に常にあります。助言がありますか?

これは、Silverlight 4で

おかげです。私は、ユーザーがそのグリッドサイズのハード制限を設定、ウィンドウサイズを変更すると、グリッドサイズを変更する

EDIT は無意味です。つまり、TextBlockが読み込まれたときと、ウィンドウのサイズが変更されたときに、コードの後ろに手動でMaxWidthを設定することができました。それはclunkyですが、それは動作します。続き

答えて

0

は確かにそれでどんな問題があるかどうか、私に教えてください...

<Grid x:Name="LayoutRoot" Background="White" Width="250"> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="Auto" /> 
     <ColumnDefinition Width="Auto" /> 
    </Grid.ColumnDefinitions> 
    <TextBlock x:Name="textBlock" Grid.Column="0" Text="Text Box" VerticalAlignment="Top"/> 
    <Button x:Name="button" Grid.Column="1" Content="Button" VerticalAlignment="Top" Width="60"/> 
</Grid> 

...コンストラクタでファイルをxaml.csに次の行を追加

public MainPage() 
{ 
    InitializeComponent(); 
    textBlock.MaxWidth = LayoutRoot.Width - button.Width; 
} 

に動作します。

ありがとう...

+0

これは、ユーザーがウィンドウのサイズを変更したときに拡大または縮小できるようにするため、幅を250ピクセルに制限します。申し訳ありませんが、私はその投稿に言及するのを忘れました。そして、私はそれを行う方法を見つけましたが、それは少しclunkyです。 – Ellipsoid

関連する問題