Динамическое имя для шаблона управления в WPF? - PullRequest
2 голосов
/ 17 декабря 2010

Нам нужно назначить свойство Name во время выполнения, используя привязку данных. У нас определен шаблон элемента управления, и WPF не позволяет связывать имя из объекта Data Bind.

Если я это сделаю, я получу ошибку, как,

Ошибка 3 MarkupExtensions не являются разрешено для свойства Uid или Name значения, поэтому «{Binding Name}» не является действительный. Линия 15 Позиция 36. C: \ Users \ gsubramani \ Workspace \ ProLinkIII_Experiment \ BasicFrame \ Resources \ TreeTemplate.xaml 15 36 BasicFrame

Чтобы обойти эту проблему, можно ли определить пользовательское свойство, которое устанавливает свойство Name элемента управления через привязку данных?

Я не знаю, как обработать DependencyProperty в WPF, чтобы я мог определить пользовательское свойство, которое интернирует свойство Name элемента управления? (Я очень новичок в мире WPF).

Ответы [ 2 ]

2 голосов
/ 20 июня 2012

Если вам это нужно для автоматизации пользовательского интерфейса, я бы рекомендовал использовать решение, описанное здесь: http://www.jonathanantoine.com/2011/11/03/coded-ui-tests-automationid-or-how-to-find-the-chose-one-control/

Вы можете использовать AutomationProperties.AutomationId с привязкой в ​​WPF и использовать это значение в качестве автоматического идентификатора в вашем клиенте автоматизации пользовательского интерфейса.

1 голос
/ 17 декабря 2010

Вам потребуется определить присоединенную зависимость в соответствии с документацией:

http://msdn.microsoft.com/en-us/library/cc903943%28VS.95%29.aspx

Затем укажите метод, который вызывается при изменении этого свойства.Вы можете сделать это, добавив другой аргумент в propertyMetdata, который указывает на статический метод:

private static void OnMyNamePropertyChanged(DependencyObject d,
    DependencyPropertyChangedEventArgs e)
{
    // d is the object which the attached property has been set on
}

В этом обработчике d - это объект, к которому было прикреплено свойство, и e.NewValueсодержат имя.

Однако я думаю, что это немного странно, что вы хотите связать Имя ваших элементов.Не могли бы вы поделиться, почему вы хотите это сделать?

С уважением, Колин Э.

...