Использование одного и того же FrameworkPropertyMetaData более одного раза - PullRequest
0 голосов
/ 31 марта 2011

У меня есть 3 свойства зависимости и FrameworkPropertyMetadata. Я получаю сбой, когда пытаюсь использовать метаданные на нескольких DP. Я не хочу иметь 3 дубликата метаданных, есть ли способ обойти это.

    static FrameworkPropertyMetadata propertyMetaData = new FrameworkPropertyMetadata("My Control", FrameworkPropertyMetadataOptions.BindsTwoWayByDefault);

    public static readonly DependencyProperty Property_A = DependencyProperty.Register("Property_A", typeof(string), typeof(MyControl), propertyMetaData);
    public static readonly DependencyProperty Property_B = DependencyProperty.Register("Property_B", typeof(string), typeof(MyControl), propertyMetaData);
    public static readonly DependencyProperty Property_C = DependencyProperty.Register("Property_C", typeof(string), typeof(MyControl), propertyMetaData);

Нужно ли объявлять отдельные метаданные для каждого свойства или я могу использовать один и тот же?

Спасибо, Имон

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Если вы хотите избежать повторения кода (что кажется разумным), вы можете написать простой метод, похожий на:

private internal static FrameworkPropertyMetadata CreateDefaultPropertyMetadata()
{
   return new FrameworkPropertyMetadata("My Control", FrameworkPropertyMetadataOptions.BindsTwoWayByDefault);
}

, а затем использовать его:

public static readonly DependencyProperty Property_A = DependencyProperty.Register("Property_A", typeof(string), typeof(MyControl), CreateDefaultPropertyMetadata());
public static readonly DependencyProperty Property_B = DependencyProperty.Register("Property_B", typeof(string), typeof(MyControl), CreateDefaultPropertyMetadata());
public static readonly DependencyProperty Property_C = DependencyProperty.Register("Property_C", typeof(string), typeof(MyControl), CreateDefaultPropertyMetadata());

Извинитеесли я объясняю очевидные вещи.

1 голос
/ 31 марта 2011

Вам нужно объявить новый для каждого.

...