0
我創建自己的自定義WPF控件,只是得出了一些文本在其OnRender
方法,但是,當我看着這個控制它不佔用任何空間設計師。我需要做什麼做,以確保我的控制佔用的空間由FormattedText
對象我這樣的情況回報?確保自定義控制正確的邊界在WPF
我創建自己的自定義WPF控件,只是得出了一些文本在其OnRender
方法,但是,當我看着這個控制它不佔用任何空間設計師。我需要做什麼做,以確保我的控制佔用的空間由FormattedText
對象我這樣的情況回報?確保自定義控制正確的邊界在WPF
這裏是什麼我與渲染方法做一個例子。我真的不需要什麼,但文本,但是,我缺少的InvalidateMeasure
和InvalidateArrange
我創建了新的幾何後調用。
private Geometry textGeometry;
protected override void OnRender(System.Windows.Media.DrawingContext drawingContext)
{
if (textGeometry == null)
{
var currentTypeface = new Typeface(FontFamily, FontStyle, FontWeight, FontStretch);
var formattedText = new FormattedText(Text
, System.Globalization.CultureInfo.CurrentCulture
, System.Windows.FlowDirection.LeftToRight
, currentTypeface
, FontSize
, Foreground
);
var d = LineHeight - formattedText.Baseline;
textGeometry = formattedText.BuildGeometry(new Point(-formattedText.OverhangLeading, d));
textGeometry.Freeze();
this.InvalidateMeasure();
this.InvalidateArrange();
}
drawingContext.DrawGeometry(Foreground, null, textGeometry);
}
你的控制具體做什麼?我不認爲重寫'OnRender()'是幾乎所有情況的最佳方法。 –
它只是繪製文本,目的只是爲了繪製文本,而不會導致過剩,並在與問候行高基線。 –
我不認爲我正確理解。你的控件和普通的'TextBlock'有什麼區別? –