GUI code in this repository must be made portable between WPF and Avalonia. Hence, WPF dependency properties must be converted into styled properties, e.g.: ``` public string Text { get { return (string)GetValue(TextProperty); } set { SetValue(TextProperty, value); } } public static readonly DependencyProperty TextProperty = DependencyProperty.Register("Text", typeof(string), typeof(SmartTextBox), new FrameworkPropertyMetadata(null, FrameworkPropertyMetadataOptions.BindsTwoWayByDefault)); ``` should be converted to: ``` public string Text { get => TextProperty.GetValue(this); set => TextProperty.SetValue(this, value); } public static readonly StyledProperty TextProperty = PortablePropertyFactory.Register(nameof(Text)); ``` PortablePropertyFactory.Register() is defined as follows: ``` public static StyledProperty Register(string name, TValue defaultValue = default, PortablePropertyFlags flags = PortablePropertyFlags.None); [Flags] public enum PortablePropertyFlags { None = 0, IsTwoWay = 1, AffectsMeasure = 2, AffectsRender = 4, } ``` Whenever you encounter WPF properties that specify flags not covered by PortablePropertyFlags, or otherwise have behavior that cannot be directly translated here, leave original definitions unchanged, and add a line like this before the property declaration, even if it would cause a build error: ``` MissingFeatures.TODO("The cannot be made portable because "); ```