2011-12-06 8 views
3

現在、私は、ViewBoxでTextBlockをラップしています。これは、StackOverflowのいくつかの回答がここに示唆しています。しかし、少しの研究をした後で、特に、このアプローチを使用する適切な数のTextBlockがある場合、これがパフォーマンスを妨げることを理解しています。SilverlightのダイナミックTextBlockフォントサイズ

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

注:テキストを表示できる限り、TextBlock以外のものを使用しても構いません。

+1

テキストのサイズを制御しているのは何ですか? 'FontSize'をビューの別の要素やビューモデルのプロパティにバインドすることができます。 – ChrisF

+0

ほとんどすべての私のコントロール(グリッドを使用)に対してダイナミック比例サイズを使用するので、可能かどうかはわかりません。私はTextBlockを全面的に使用しているので、フォントサイズを明示的に計算して束縛する必要のないソリューションを期待していました。 –

+0

次のようなものがあります: 'FontSize =" {バインディングElementName = YourGrid、Path = ActualHeight、Converter = {StaticResource myConverter} "'コンバータはグリッドの 'ActualHeight'を取って、それは相対的な計算を使用します。詳細 - http://www.chrisforman.me.uk/2011/05/a-nifty-silverlight-feature/確かにそれはあなたが欲しいものなので、それは答えではありません(まだ)。 – ChrisF

答えて

1

From this forum

// Event handler 
private void ControlsSizeChanged(object sender, System.Windows.SizeChangedEventArgs e) 
{ 
    GetFontSize(sender as Control); 
} 

// Method for font size changes 
public static void GetFontSize(Control control) 
{ 
    PropertyInfo info; 
    if (control == null || control.ActualHeight <= 0) 
     return; 
    if((info = control.GetType().GetProperty("FontSize", typeof(double))) != null) 
    { 
     info.SetValue(control, 0.7 * control.ActualHeight, null); 
    } 
} 

ちょうど魔法の計算関係ありませんViewBoxes。フォントのサイズを変更し、テキストが収まるまで数回測定するなど、スレッドには他にも提案があります。

+0

XAMLの唯一の解決策を見つけることを望んでいましたが、これはViewBoxesを使用したよりも優れています。 –

関連する問題