2

次のような XAML があるとします。

<StackPanel>
    <TextBlock Text="Blah Blah Blah" />
</StackPanel>

この場合、予想どおり、Width は NaN です。これは、StackPanel のサイズとともに大きくなり、明示的に設定されていないためです。

残念ながら、ActualWidth では期待した結果が得られません。ActualWidth は、StackPanel のサイズに制限されません。テキストが親の StackPanel のサイズを超えた場合でも、レンダリングされたテキストの長さにバインドされます。

たとえば、StackPanel.ActualWidth が 400 で、テキストが 400 より大きい場合、TextBlock.ActualWidth は 556 (またはその他) になる可能性があります。同じ状況のボタンは、このようには動作しません。

TrimmingText を実装する添付の動作を実装しようとしているため、これは私にとって問題です (テキストがトリミングされている場合は末尾の省略記号)。Width プロパティが明示的に設定されている場合はうまく機能しますが、より動的なケースでは機能しません。

何かご意見は?

ブライアン

4

1 に答える 1

1

これは、見かけほど単純な問題ではないと思います (少なくとも私にはそうでした)。WPF では、通常、のDockPanel代わりにコントロールを使用することをお勧めしますStackPanelDockPanelSilverlight の場合、コントロールが存在しないという事実によって問題が悪化します。親のサイズが変わるたびに、のプロパティを親のWidthプロパティに更新することをお勧めします (うまくいく場合とうまくいかない場合があります) 。最もエレガントなソリューションではありませんが、残念ながら必要になる場合があります。TextBlockActualWidthStackPanel

于 2009-06-04T15:19:34.377 に答える