2

つまり、このコントロールの 1 つと、その列の 1 つの中にテキストがあります。通常、ユーザーが列のサイズを変更すると、テキストが切り取られます。テキストブロックまたはテキストボックスでテンプレートを使用しようとしていて、テンプレート内に TextWrapping="Wrap" を設定しようとしても、実際には何も変わりません。抜け道は?

*はい、質問する前に検索したところ、このサイトで同様の質問が見つかりました。しかし、答えはありません ((( *


アンディ、答えてくれてありがとう、私自身はそのように振る舞うべきだと思っていました. 私はあなたの単純なバリアントを確認しましたが、動作します。私は同様の例を持っていますが、うまくいきませんでした。唯一の違いは、テンプレートで、Content プロパティ内の StackPanel 内に TextBlock とその他のコントロールを持つ UserControl を使用したことです。そして、コードのさまざまな部分で Width や Horizo​​ntalAlignment などを何時間も試した後、何もできないことがわかりました。そして - StackPanel を Grid に変更しました。そして - ビオラ!- できます。それがバグなのか、StackPanelの特定の反応なのかはわかりません(実際、実行時にパラメーターをチェックしましたが、非常に奇妙でした:ActualWidthはDesiredSizeとパネルの実際の幅を超えていました)。誰かが私に言うことができれば、なぜそうなのか? - 面白そうですね。

4

2 に答える 2

4

以下は私のために働いた:

<ListView ItemsSource="{Binding Source={StaticResource MyItems}}">
    <ListView.View>
        <GridView>
            <GridViewColumn Width="50" Header="Column 1">
                <GridViewColumn.CellTemplate>
                    <DataTemplate x:Name="col1Template">
                        <TextBlock TextWrapping="WrapWithOverflow" Text="{Binding Path=Column1Text}" />
                    </DataTemplate>
                </GridViewColumn.CellTemplate>
            </GridViewColumn>
            ...
        </GridView>
    </ListView.View>
</ListView>

これにより、列の幅がすべてのテキストを表示するのに十分な幅がない場合、最初の列のテキストが複数の行に折り返されました。

于 2009-02-06T23:51:29.907 に答える
1

datagrid RowHeightが定義されていないことを確認してください。定義されていない場合、テキストがラップされた後、テキストブロックの「真の」高さをオーバーライドします。

于 2010-04-28T15:39:33.967 に答える