FrameworkPropertyMetadataOptions.AffectsMeasure и FrameworkPropertyMetadataOptions.AffectsRender в Avalonia
Перенос приложения из wpf в avalonia ui. Во время переноса я столкнулся с тем, чего нет в документации. В общем есть кусок кода от wpf:
public class BaseLabelElement : UIElement
{
public static readonly DependencyProperty FontFamilyProperty = DependencyProperty.Register(
"FontFamily", typeof(FontFamily), typeof(BaseLabelElement), new FrameworkPropertyMetadata(DefaultFontFamily,
FrameworkPropertyMetadataOptions.AffectsMeasure | FrameworkPropertyMetadataOptions.AffectsRender, FontFamilyPropertyChanged));
public FontFamily FontFamily
{
get { return (FontFamily)GetValue(FontFamilyProperty); }
set { SetValue(FontFamilyProperty, value); }
}
}
Как добавить новое поведение, соответствующее
new FrameworkPropertyMetadata (.., FrameworkPropertyMetadataOptions.AffectsMeasure | FrameworkPropertyMetadataOptions.AffectsRender,..)
для свойства зависимости в Авалонии?
1 ответ
Решение
AffectsRender<T>(AvaloniaProperty[]) and AffectsMeasure<T>(AvaloniaProperty[])
методы в классе Visual. Эти методы следует вызывать в конструкторе статического элемента управления с каждым свойством элемента управления, которое должно вызывать перерисовку при изменении. Это похоже на флаги FrameworkPropertyMetadata.AffectsRender и AffectsMeasure в WPF.