2013-02-14 3 views
1

Можно ли связать имя свойства. Я, кажется, придумываю ошибки времени выполнения, когда я пытаюсь.Можно ли связать имя объекта?

Например:

<button Name="{Binding UniqueID}" Click="ButtonHandler"> 

Это существо в заголовке для коллекции в сетке ракурса ...

+0

Хороший вопрос. В теории Имя кажется DependencyProperty, и оно должно работать, но я не удивлюсь, если это не так. Вы проверили документы? Кроме того, может быть и другое, чтобы отлаживать ваши исключения во время выполнения, если у вас есть какой-либо конкретный. http://msdn.microsoft.com/en-us/library/windows/apps/windows.ui.xaml.frameworkelement.name.aspx –

ответ

1

Вы не можете связать Имя, извините. Он используется для слишком многих вещей внутри, и все, конечно, сойдет с ума, если можно. Эти документы немного расплывчато, но говорить об этом: (курсив мой)

Вы не можете использовать строковое значение имени как прямого значения источника для источника привязки данных. Если вам нужно отобразить то же строковое значение, что и имя в пользовательском интерфейсе со связыванием, вы должны скопировать то же значение в свойство тега, которое может быть использовано как свойство источник привязки. Также не используйте Имя как цель привязки.

(MSDN: FrameworkElement.Name)

Однако, если вы хотите прикрепить случайные дополнительные данные к элементам управления пользовательского интерфейса, я бы рекомендовал использовать вложенные свойства вместо этого. Таким образом, они специально связаны с тем, что вы делаете, и будут соответствующим образом напечатаны, в отличие от Tag.

(MSDN: Custom Attached Properties)

0

Ну, я читал документацию снова и снова и не может найти способ чтобы он работал. В документации не говорится, что вы не можете этого сделать, но он не говорит, что вы можете это сделать.

Однако, я нашел два обходных решения. Вместо того, чтобы связывать имя, если вы не используете Tag или DataContect, вы можете найти те и в обработчике извлечение их путем литья в виде строки.

Это не изящно, но, похоже, работает так, как ожидалось.