2012-02-29 17 views
0

グリッドがあり、2つの列があり、定義はここにあります。グリッド内で、テキストブロックの幅を設定する方法

<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="180"></ColumnDefinition> 
     <ColumnDefinition Width="auto"></ColumnDefinition> 
    </Grid.ColumnDefinitions> 
    <TextBlock Name="nText" Text="{Binding Name}" Grid.Column="0" /> 
    <TextBlock Name="vText" Text="{Binding Value}" Grid.Column="1" HorizontalAlignment="Left" TextWrapping="Wrap"/> 
</Grid> 

テキストが長すぎる私の質問は、VTEXTのために、テキストは関係なくcolumndefinition幅がautoまたは*で、ラップすることはできませんされています。しかし、列2の幅またはvTextの幅に確定値を設定すると、テキストが折り返されます。

テキストコンテンツをラップできるようにテキストブロックの幅を設定するにはどうすればよいですか?

columnDefinitionのwidth/ActualWidthにバインドしようとしましたが、失敗しました。

大変感謝しています。 "auto"モードが子要素に基づいて、その大きさを推測することを期待するので

<ColumnDefinition Width="*"></ColumnDefinition> 

<ColumnDefinition Width="auto"></ColumnDefinition> 

を変え、BalamBalamの答えについては詳しく説明し

答えて

0
<Grid> 
    <Grid.ColumnDefinitions> 
     <ColumnDefinition Width="180"></ColumnDefinition> 
     <ColumnDefinition Width="*"></ColumnDefinition> 
    </Grid.ColumnDefinitions> 
    <Grid.RowDefinitions> 
     <RowDefinition Height="auto" /> 
    </Grid.RowDefinitions> 
    <TextBlock Grid.Column="0" Grid.Row="0" Name="nText" Text="nText"/> 
    <TextBlock Grid.Column="1" Grid.Row="0" Name="vText" TextWrapping="Wrap"> 
     vText vTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvText 
     vTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvText 
     vTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvTextvText 
    </TextBlock> 
</Grid> 
+0

返信いただきありがとうございます。テキストのバインディングデータを使用するには? – user1205398

+0

あなたが持っているバインディングを試しましたか?質問によると、バインディングはラップしていないだけで動作していました。 – Paparazzi

1

は、あなたがやりたいだろう。この場合、TextBlockには幅が定義されていないので、ColumnDefinitionが幅を推測する方法はありません。

ColumnDefinitionもTextBlockも幅が定義されていないため、TextBlockの幅はデフォルトで無限になり、単語ラップアルゴリズムはテキストをクリップしません。

対照的に、"*"は、グリッド(幅を設定した場合)またはその親の1つによって定義される残りのスペースを埋めることを意味します。最悪の場合、ウィンドウの幅/高さが常に設定されているため、"*"は最上位レベルの値を見つけることができます。

これは、レイアウトエンジンがどのようにサイズの魔法をやっているのか、もう少し明るいことを願っています。

+0

ありがとうございます。私は "auto"と "*"を試しましたが、結果は同じでした。 – user1205398

+1

グリッド周辺のコントロールは何ですか? * FrameworkElementチェーンのサイズがある場合は、無限のサイズを取得できるはずです。グリッドに幅を設定しても「*」は機能しませんか? – ianschol