Silverlight 的 DataTemplate 中缺少 FindName 方法是否有解决方法?

发布于 2024-07-08 16:32:24 字数 135 浏览 11 评论 0原文

根据 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

梦毁影碎の 2024-07-15 16:32:24

如果边框位于 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.

欢你一世 2024-07-15 16:32:24

不完全确定我理解这个场景,但既然你提到了 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文