gpt4 book ai didi

wpf - 将标记扩展编写为嵌套元素

转载 作者:行者123 更新时间:2023-12-04 05:03:21 25 4
gpt4 key购买 nike

是否可以将标记扩展编写为嵌套元素而不是属性?我正在尝试使用 Boolean作为 ResourceDictionary 的关键条目。

当前代码 where ResourceDictionary键类型是字符串:

<UserControl.Resources>
<my:ObjectToResourceConverter x:Key="StatusConverter">
<ResourceDictionary>
<BitmapImage x:Key="True" UriSource="/TestProject;/Resources/Open.png"/>
<BitmapImage x:Key="False" UriSource="/TestProject;/Resources/Closed.png" />
</ResourceDictionary>
</my:ObjectToResourceConverter>
</UserControl.Resources>

需要的代码但由于以下原因无法编译:

Unrecognized tag x:Key


XAML
... 
<BitmapImage UriSource="/TestProject;/Resources/Open.png">
<x:Key>
<x:Boolean>True</x:Boolean>
</x:Key>
</BitmapImage>
...

最佳答案

嗯,是的,您通常可以使用元素语法声明标记扩展,但是 x:Key实际上是一个指令,而不是一个标记扩展。如所述 here , x:Key不支持 XAML 2006 中的元素语法。如果您使用 XAML 2009,它支持,但您不太可能(或希望)。

但即使你可以这样做,也无济于事,因为(在 XAML 2006 中;XAML 2009 可能不同,没有检查)资源字典的键只能使用 string 设置。 , x:Type , 或 x:Static .因此,对于您的情况,您需要定义一个生成 false 的静态属性。 ,并使用 x:Static 将其设置为 key .

编辑 关于仅支持的部分string , x:Type , 和 x:Static不完全正确。我太相信编译器错误消息(上面写着“只支持 String、TypeExtension 和 StaticExtension。”)。至少还有一种其他受支持的 key 类型:ComponentResourceKey .可能还有更多我忘记或我不知道的。但无论如何,不​​支持任意标记扩展(如自定义定义的返回 bool 值)。

关于wpf - 将标记扩展编写为嵌套元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15846547/

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