Аналог FrameworkPropertyMetadataOptions.AffectsMeasure и FrameworkPropertyMetadataOptions.AffectsRender из wpf в AVALONIA UI?
Перевожу приложение под 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,..)"? Также хочу добавить, что есть возможность в конструкторе добавить через методы AffectsMeasure("Список свойств зависимостей") и AffectsRender("Список свойств зависимостей") добавить флаги для данных свойств, но они не рекомендованные
Ответы (1 шт):
AffectsRender <T> (AvaloniaProperty []) и AffectsMeasure <T> (AvaloniaProperty []) в классе Visual. Эти методы должен вызываться в статическом конструкторе элемента управления с каждым свойством элемента управления, которое при изменении должно вызывать перерисовку. Это похоже на флаги FrameworkPropertyMetadata.AffectsRender и AffectsMeasure в WPF.