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。フォントのサイズを変更し、テキストが収まるまで数回測定するなど、スレッドには他にも提案があります。
テキストのサイズを制御しているのは何ですか? 'FontSize'をビューの別の要素やビューモデルのプロパティにバインドすることができます。 – ChrisF
ほとんどすべての私のコントロール(グリッドを使用)に対してダイナミック比例サイズを使用するので、可能かどうかはわかりません。私はTextBlockを全面的に使用しているので、フォントサイズを明示的に計算して束縛する必要のないソリューションを期待していました。 –
次のようなものがあります: 'FontSize =" {バインディングElementName = YourGrid、Path = ActualHeight、Converter = {StaticResource myConverter} "'コンバータはグリッドの 'ActualHeight'を取って、それは相対的な計算を使用します。詳細 - http://www.chrisforman.me.uk/2011/05/a-nifty-silverlight-feature/確かにそれはあなたが欲しいものなので、それは答えではありません(まだ)。 – ChrisF