gpt4 book ai didi

silverlight - 从 DataTemplate 按名称获取对象引用

转载 作者:行者123 更新时间:2023-12-01 13:00:42 25 4
gpt4 key购买 nike

如果我有以下 XAML:

<toolkit:DataForm Height="100"  x:Name="form">        <toolkit:DataForm.EditTemplate>            <DataTemplate>                <StackPanel Name="stack"></StackPanel>            </DataTemplate>        </toolkit:DataForm.EditTemplate>    </toolkit:DataForm>
我可以通过 this.FindName("form") 从 View 中获取对“表单”的引用。

如何获得对“堆栈”的引用? FindName 返回空值。

最佳答案

这里的问题是 DataTemplate 的 xaml 内容与外部 Xaml 属于不同的 NameScope。打电话FindName在元素上仅搜索最初生成该元素的 NameScope。因此调用FindNameUserControl 上不会找到由 DataTemplate 生成的元素.原因是DataTemplate (和其他模板)被设计为多次重复使用,使用 NameScope 消除了名称的歧义。

解决方案是调用 VisualTreeHelper 的帮助,看看这个 blog 中的代码对于我的看法VisualTreeHelper .随着VisualTreeEnumeration该博客中的类已添加到您的项目中,您可以这样做:-

var element = this.Descendents().OfType<FrameworkElement>().FirstOrDefault(fe => fe.Name == "stack");

当然如果你知道“stack”是一个StackPanel然后你可以通过 .OfType<T> 获得更具体的信息.

关于silverlight - 从 DataTemplate 按名称获取对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6137967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com