2011-02-02 9 views
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> 
+1

トリミングするには既知の幅が必要となるため、トリミングするテキストを取得することはできません。 – ChrisF

+0

グリッド列の幅は、上記の例では30%、30%、40%の割合で定義されています。列に少量のテキストが含まれている場合、列はアプリケーションのサイズに応じてスケールされます。グリッドは、それに応じて列を拡大縮小できるように幅を知っていなければなりません。したがって、私はTextBlockが列の幅を継承することを期待しています。 – bjrave

+0

あなたのコードを試してみましたが、うまくいきました。あなたのXAMLにはもっと多くの要素があるかもしれませんか?はいの場合は、すべてのXAMLを指定してください。 –

答えて

0

問題を解決しました。

ScrollViewer 'Horizo​​ntalScrollBarVisibility'プロパティが 'Hidden'に設定されていた場合、プロパティが 'Disabled'に設定されている必要があります。

ありがとうございました。

関連する問題