是的,Silverligt 4 早于 WPF 的当前版本。当您将模板添加为资源时,即像我一样,我在 ResourceDictionary 之间的 Application.xaml MergedResources 中添加了一个 userControl 模板。在 XAML 中,如果标签实现了 IDictionary,您可以使用 x:Key 属性。像那样
<ResourceDictionary>
<DataTemplate x:Key="TextBoxEditTemplate">
<Some user control x:Name="myOwnControl" />
</DataTemplate>
</ResourceDictionary>
行!您可以通过对Application.Current.resources["TextBoxEditTemplate"]
进行编码来访问您的模板,另一方面,某些查找此模板成员的方法将不起作用。除了这个 DataTemplate 没有实现 IDictionary,所以你不能为这个 dataTemplate 中的项目分配 x:Key 属性。作为示例中的 myOwnControl。
如果没有 xaml,当前的 silverlight 对创建完全动态的代码隐藏 DataTemplates 有一些限制。即使它适用于 WPF。
无论如何,此时最好的解决方案是为数据模板创建 XAML 脚本,您可以在 DataTemplate 脚本中添加一些值元素。我们创建了自己的用户控件,它具有一些具有 DependencyObjectProperty 的属性...
最后,如果您的对象没有继承,即不是 MyControl:UserControl,您可以通过这种方式继承MyObject:DependencyObject,您可以通过调用 Application.Current.Resources.FirstChilderen... 来访问您的对象。
FindName 仅适用于 WPF