16

ユーザーコントロール(下記)があります。テキストをデータソースにバインドし、一連のユーザーコントロールをインスタンス化します。

テキストのサイズは、コントロールの範囲内に収まる最大のサイズにする必要があります。Windowsプログラミングでは、テキストサイズを測定して、フォントサイズをターゲットのサイズに合うまでデクリメントすることができました。

Silverlightでこれを行う方法はありますか?

はおそらく同じようにそれを行うことができることを知っていますが、それを行うための「より良い」方法はありますか?

<Grid x:Name="gdBubble" Width="180" Height="95">
    <Ellipse x:Name="elBubble" Fill="#FFFFA300" />
    <TextBlock x:Name="txtContent" Text="{ Binding ClientName }" HorizontalAlignment="Center" VerticalAlignment="Center" />
</Grid>

[ここでは、テキストブロックを正しく中央に配置するためにグリッドを使用しています。]

答えは、リッチがビューボックスを使用することを説明したとおりでした。

これが(私にとって)勝利の構成でした:

<Grid x:Name="gdBubble" Width="180" Height="95">
    <Ellipse x:Name="elBubble" Fill="#FFFFA300" />
    <controls:Viewbox Margin="10,10,10,10" VerticalAlignment="Stretch" Height="Auto">
        <TextBlock x:Name="txtContent" FontSize="18" Text="{ Binding ClientName }" HorizontalAlignment="Center" VerticalAlignment="Center" />
    </controls:Viewbox>
</Grid>
4

3 に答える 3

21

昨日、コンテナのサイズに合わせてコンテンツを自動的にサイズ変更することについて、同様の質問がありました。この場合の答えは同じです。Viewbox を使用します。TextBlock を Viewbox 内に配置すると、TextBlock は必要なスペースのみを使用するようにサイズ変更され、Viewbox はこれをコンテナの寸法に引き伸ばす処理を行います。Stretch 属性を使用して、4 つのストレッチ方法のいずれかを選択します。

昨日のこのスレッドを見てください:

ウィンドウでサイズを変更するWPF Gui?

于 2009-04-09T16:22:45.473 に答える
0

グリッドの代わりにドックパネルを試してください。LastChildFill = trueを使用すると、探している動作が得られます。

于 2009-04-09T15:54:34.557 に答える
0

変換 ScaleTransform を調べましたか?

イブ。

于 2009-04-09T17:16:48.120 に答える