Могу ли я создать свойства XAML как в пространстве имен "x" - PullRequest
0 голосов
/ 06 апреля 2020

Я знаю, что могу создать вложенные свойства, например

public enum HideOption
{
  node,
  tree
}

public static class Hide
{
  public static readonly DependencyProperty OptionProperty 
                = DependencyProperty.RegisterAttached ( "Option", 
                                                        typeof(HideOption), 
                                                        typeof(Hide), 
                                                        new PropertyMetadata(HideOption.node) ) ;

  public static HideOption GetOption ( DependencyObject obj )
  {
    return (HideOption)obj.GetValue(OptionProperty);
  }

  public static void SetOption ( DependencyObject obj, HideOption value )
  {
    obj.SetValue(OptionProperty, value);
  }
}

и использовать его на узлах XAML, например

<Grid m:Hide.Option="tree">
</Grid>

Атрибуты в пространстве имен "x" имеют более короткий синтаксис, такой как

<Grid x:Uid="MyGrid">
</Grid>

Возможно ли создать мои собственные атрибуты, которые будут использовать этот синтаксис, например

<Grid m:Hide="tree">
</Grid>

, или это какая-то особая функция языка XAML недоступна в нормальные библиотеки?

1 Ответ

1 голос
/ 06 апреля 2020

Это не прикрепленные свойства. x namespace содержит директивы компилятора XAML. Это инструкции для синтаксического анализатора XAML и компилятора или генератора кода. Например, x: Class указывает компилятору связать сгенерированный класс XAML с объявленным partial классом C# (code-behind). Эти директивы не DependencyProperties и не участвуют в системе свойств зависимостей, как это делают вложенные свойства.
Поскольку эти директивы относятся к уровню компилятора, я не думаю, что вы можете их создавать. Вам понадобится способ сообщить компилятору, как интерпретировать эти директивы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...