WPF中控件模板的动态名称?

时间:2010-12-17 11:05:48

标签: c# wpf data-binding prism

我们需要使用数据绑定在运行时分配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 个答案:

答案 0 :(得分:2)

如果你需要这个用于UI自动化,我建议使用这里描述的解决方案: http://www.jonathanantoine.com/2011/11/03/coded-ui-tests-automationid-or-how-to-find-the-chose-one-control/

您可以在WPF中使用AutomationProperties.AutomationId和绑定,并且可以在UI自动化客户端中将此值用作automationid。

答案 1 :(得分:1)

您需要根据此处的文档定义附加的依赖项:

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将包含名称。

但是,我认为你想要绑定元素的名称有点奇怪。你能否分享一下你为什么要这样做?

问候,科林E.