Silverlight 的 DataTemplate 中缺少 FindName 方法是否有解决方法?
根据 C# 编译器和 Silverlight 2 文档,Silverlight 没有为 DataTemplate 类提供 FindName 方法。 我想找到 ContentPresenter 内的边框。 SilverLight 2 中最好的方法是什么?
According to the C# compiler and the Silverlight 2 documentation, Silverlight doesn't provide a FindName method for the DataTemplate class. I want to find a Border that's inside a ContentPresenter. What's the best way in SilverLight 2?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
如果边框位于 DataTemplate 内,而不是 ControlTemplate 内,那么我过去能够做到这一点的唯一方法是使用 VisualTreeHelper 来定位我需要的元素。
If the border is inside a DataTemplate, not a ControlTemplate, then the only way I've been able to do that in the past is to use VisualTreeHelper to locate the element I need.
不完全确定我理解这个场景,但既然你提到了 DataTemplate,我假设你正在使用模板。
如果您使用模板,那么您要做的就是为边框指定一个名称 (x:Name="border"),然后重写 OnApplyTemplate 方法。 在该方法中,您使用 GetTemplateChild 并传递您使用的名称。 这将返回对您的边界的引用。
如果您不使用模板并且引用了 ContentPresenter,那么您可以编写一个递归函数来查看子项的 Content 属性,如果它不是边框,则对其内容调用相同的函数。
Not totally sure I understand the scenario, but since you mention the DataTemplate I'm assuming you're using a template.
If you're using a template then what you do is give your border a name (x:Name="border") and then override the OnApplyTemplate method. In that method you use GetTemplateChild and pass the name you used. This will return a reference to your border.
If you're not use a template and have a reference to the ContentPresenter then you could write a recursive function that looks at the Content property of the child and if it isn't a border then calls your same function on its content.