1
グリッドとコンテナの幅は固定されていません。Silverlight - TextWrapping固定幅のないグリッド内でWordEllipsisが機能しない
私はTextBlockコントロール内のテキストを省略記号でトリムするようにしています。
テキストはトリムされません。代わりに、テキスト全体がSilverlightアプリケーションの幅を超えて表示されます。
問題は、グリッドまたはそのコンテナの固定幅がないという事実に関連しているようです。幅を設定すると、テキストは必要に応じてトリムされます。
誰でもこの問題を経験しましたか?テキストをトリミングする方法はありますか?
ありがとうございます。
<UserControl.Resources>
<DataTemplate x:Key="ExampleTemplate">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="0.3*"/>
<ColumnDefinition Width="0.3*"/>
<ColumnDefinition Width="0.4*"/>
</Grid.ColumnDefinitions>
<TextBlock Grid.Column="0" Text="Long text here - blah blah blah blah blah blah blah blah blah blah blah blah" TextTrimming="WordEllipsis" />
<TextBlock Grid.Column="1" Text="Long text here - blah blah blah blah blah blah blah blah blah blah blah blah" TextTrimming="WordEllipsis" />
<TextBlock Grid.Column="2" Text="Long text here - blah blah blah blah blah blah blah blah blah blah blah blah" TextTrimming="WordEllipsis" />
</Grid>
</DataTemplate>
</UserControl.Resources>
<ScrollViewer>
<ItemsControl ItemTemplate="{StaticResource ExampleTemplate}" ItemsSource="{Binding ExampleRows}"/>
</ScrollViewer>
トリミングするには既知の幅が必要となるため、トリミングするテキストを取得することはできません。 – ChrisF
グリッド列の幅は、上記の例では30%、30%、40%の割合で定義されています。列に少量のテキストが含まれている場合、列はアプリケーションのサイズに応じてスケールされます。グリッドは、それに応じて列を拡大縮小できるように幅を知っていなければなりません。したがって、私はTextBlockが列の幅を継承することを期待しています。 – bjrave
あなたのコードを試してみましたが、うまくいきました。あなたのXAMLにはもっと多くの要素があるかもしれませんか?はいの場合は、すべてのXAMLを指定してください。 –