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.

Другие вопросы по тегам