gpt4 book ai didi

WPF 数据模板 - x :Key vs DataType ="{x:Type XXXX")

转载 作者:行者123 更新时间:2023-12-04 01:48:14 25 4
gpt4 key购买 nike

我有一个数据模板,我想使用 FrameworkElement.FindResource() 找到它.为此,我需要在数据模板上有一个键。

问题在于 x:key 和分配数据类型是相互排斥的。 ( Reference )

那么,一旦我为我的模板设置了 DataType,我该如何找到 Key 值呢?是否有一些公式可以将 DataTemplate 转换为 Key 的字符串?

(有关为什么我需要获取 Resource 找到的 DataTemplate 的查询,请参阅此 question

最佳答案

x:Key 似乎是 System.Windows.DataTemplateKey 类型的对象.因此,您可以使用 new DataTemplateKey(typeof(myType)) 为您的资源“创建” key 。 . FindResource将使用此键,因为 TemplateKey.Equals已被覆盖。

这是一个非常简单的示例应用程序:

XAML:

<Window ...>
<Window.Resources>
<DataTemplate DataType="{x:Type TextBlock}">
</DataTemplate>
</Window.Resources>

<Button Click="Button_Click">Test</Button>
</Window>

代码隐藏:

//using ...

namespace WpfCsApplication1 {
public partial class Window1 : Window {
public Window1() {
InitializeComponent();
}

private void Button_Click(object sender, RoutedEventArgs e) {
var key = new System.Windows.DataTemplateKey(typeof(TextBlock));
var r = (DataTemplate)this.FindResource(key);

MessageBox.Show(r.ToString()); // to show that it worked
}
}
}

关于WPF 数据模板 - x :Key vs DataType ="{x:Type XXXX"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1953618/

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