c# - 如何手动查找仅由 DataType 而不是 key 定义的 DataTemplate?

标签 c# wpf xaml datatemplate

我正在尝试获取将用于特定类型的 DataTemplate。

我的印象是,当您仅指定 DataType 时,它​​会隐式使用该值作为该资源的键,以便系统可以查找它。

我尝试用这段代码测试它......

主窗口.wpf:

xmlns:system="clr-namespace:System;assembly=mscorlib"
<Window.Resources>
    <DataTemplate DataType="{x:Type system:String}">
        <Border x:Name="Bd"
            BorderBrush="Red" BorderThickness="1" CornerRadius="6"
            Padding="6,4">
            <TextBlock Text="{Binding}" />
        </Border>
    </DataTemplate>
</Window.Resources>

...然后我尝试了以下操作,但失败了...

var stringType = typeof(string);
var stringDataTemplate = this.FindResource(stringType);

那么如何以编程方式检索仅由类型定义的数据类型?

最佳答案

该类型用作Styles的键,对于DataTemplates,您可以构造一个 DataTemplateKey从类型。

(与 XAML 中的 DataType 一样,您可以通过标记名称传递用于 XML 模板的对象。您必须传递 CLR 类的类型。)

关于c# - 如何手动查找仅由 DataType 而不是 key 定义的 DataTemplate?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18559792/

相关文章:

c# - java是否像c#一样支持显式接口(interface)实现?

c# - 在 VS 中运行单元测试与调试单元测试时,我应该期待什么区别?

wpf - 缩小图像而不是拉伸(stretch)

c# - DataGridRowTemplateColumn - 高效地重构和使用样式?

xaml - 如何确定 Windows UWP 应用程序的正确回复 URL?

c# - 如何在xamarin表单中设置选择器的值

c# - 恢复 Nuget 包缓存?

c# - 为什么使用 Linq-to-Objects 进行排序会将项目与自身进行比较?

c# - 使用 HTMLAgilityPack 选择具有属性数据 url 的元素

c# - WPF 中类似 Acrobat 的 PopUp