gpt4 book ai didi

c# - 如何访问WPF中的嵌套资源?

转载 作者:行者123 更新时间:2023-12-02 21:55:18 26 4
gpt4 key购买 nike

我有以下资源:

<Window.Resources>
<Style x:Key="TopKey" TargetType="local:CustomType">
<Style.Resources>
<DataTemplate x:Key="NestedKey">
<TextBlock Text="{Binding Path=Name}"/>
</DataTemplate>
</Style.Resources>
</Style>
</Window.Resources>

然后我有以下声明:

<local:CustomType ItemTemplate="{StaticResource TopKey.NestedKey}"/>

当然上面的行无法编译,我不知道如何解决这个问题......

最佳答案

将资源放入 FrameworkElement 的 ResourceDictionary 中意味着您不希望在此 FrameworkElement 之外访问该资源(尽管您可以在后面的代码中绕过它)。

在您的情况下,NestedKey 位于错误的 ResourceDictionary 中。尝试这样的事情:

<Window.Resources>
<DataTemplate x:Key="NestedKey">
<TextBlock Text="{Binding Path=Name}"/>
</DataTemplate>
<Style x:Key="TopKey" TargetType="local:CustomType">
<!-- here I can use {StaticResource NestedKey} -->
</Style>
</Window.Resources>

<!-- in the same window I can use: -->
<local:CustomType ItemTemplate="{StaticResource NestedKey}"/>

您还可以定义一个基于 TopKey 资源的新样式,从而获得对其 ResourceDictionary 的访问权限(但这是一种解决方法,您可以做得更好)

<local:CustomType>
<local:CustomType.Style>
<Style BasedOn={StaticResource TopKey} TargetType="local:CustomType">
<!-- here I can use {StaticResource NestedKey} -->
</Style>
</local:CustomType.Style>
</local:CustomType>

关于c# - 如何访问WPF中的嵌套资源?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17921890/

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