2012-05-05 14 views
1

が、私はこのようなものを持っている、それは代わりにテキストをラップで膨張する:シルバーのTextBlockは

<ListBox ItemsSource="{Binding List}"> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> 
     </Style> 
    </ListBox.ItemContainerStyle> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition Width="*" /> 
       </Grid.ColumnDefinitions> 
       <TextBlock Text="{Binding Property}" TextWrapping="Wrap" Grid.Column="0"/> 
      </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

そして私がいる問題は、TextBlockには、グリッド列(およびリストボックス)を展開することですテキストが長すぎる場合は、期待どおりに折り返すのではなく、たぶん私はグリッドの星のサイジングの概念を完全に理解していないかもしれませんが、列の幅が "残りの空き領域"を意味する "1 *"に設定されているので、テキストブロックはそれを超えて拡大しようとすべきではない代わりにテキストを折り返す必要があります。

この問題を解決するにはどうすればよいですか?ところで、グリッド(またはその他のコンテナ)が必要なのは、Textblock以外のコンポーネントがあるからです。 ItemContainerStyleセクションもそこにあり、Listbox要素は全体のスペースを占有します。

ありがとうございます!

答えて

1

ListBoxにScrollViewer.HorizontalScrollBarVisibility="Disabled"を追加してみてください。

+0

それは動作しませんでした。スクロールバーを使用せずに同じ動作(つまり、ラップされる代わりにコンテンツが拡張されます)が発生します。 – Paul

+0

完全なXAMLコードを投稿できますか? ListBoxのサイズを変更する場合は、dataTemplateとHorizo​​ntalScrollを使用してテキストを折り返す必要があります。あなたのリストボックスがstackPanelの中​​にあるか、サイズを変更するために割り当てられていないものがありますか? – Leo

+0

あなたは何を知っていますか?これは実際には*動作します!私はあなたの答えを再読し、私はあなたが示唆したもの以外の何かをしていたことに気付きました。どうもありがとう! – Paul

-1

それは次のようにしてみてください、ちょうど1になる場合は、列の定義は必要ありません。

<ListBox ItemsSource="{Binding List}"> 
    <ListBox.ItemContainerStyle> 
     <Style TargetType="ListBoxItem"> 
      <Setter Property="HorizontalContentAlignment" Value="Stretch"></Setter> 
     </Style> 
    </ListBox.ItemContainerStyle> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <Grid> 
       <TextBlock Text="{Binding Property}" TextWrapping="Wrap" HorizontalAlignment="Stretch"/> 
      </Grid> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 
+1

グリッド上に他のコンポーネントがあるため、列定義が必要です。私は例を簡略化するために省略した。とにかく私はあなたの例が私のものとどう違うか分かりません。なぜなら、デフォルトの列は "*"なので、 – Paul

+0

それらを省略すると、良い答えを得るのに役立たないでしょう –

+0

良い点。さて、他のコンポーネントが必要だと言ったことをすべて忘れてしまった。そして、いいえ、列定義を削除しても機能しなくなり、まったく同じ結果が得られます。 – Paul