【问题标题】:How to declare an empty string in XAML ResourceDictionary如何在 XAML ResourceDictionary 中声明一个空字符串
【发布时间】:2011-08-26 19:46:34
【问题描述】:

我有一个包含字符串的ResourceDictionary

<ResourceDictionary xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:sys="clr-namespace:System;assembly=mscorlib">
    <sys:String x:Key="Foo">Hello world</sys:String>
    ...
</ResourceDictionary>

这个字典是一个主题的一部分,在某些主题中,有些字符串是空的:

    <sys:String x:Key="Foo"></sys:String>

麻烦的是,在这种情况下,我得到一个XamlParseException

无法创建“System.String”类型的对象。创建实例失败, 这可能是由于没有公共默认构造函数 'System.String'

我知道可以在数组资源中声明一个空字符串,使用&lt;x:Static Member="sys:String.Empty" /&gt;,但我不想要一个数组...直接使用x:Static作为资源返回标记扩展,而不是字符串.将x:Static 放入sys:String 元素会产生与以前相同的错误。

甚至可以将空字符串声明为 XAML 资源吗?怎么样?

【问题讨论】:

    标签: wpf xaml resources string


    【解决方案1】:

    使用x:Static 声明它似乎对我来说很好......

    <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                        xmlns:local="clr-namespace:Test"
                xmlns:sys="clr-namespace:System;assembly=mscorlib">
        <x:Static x:Key="empty" Member="sys:String.Empty" />
    </ResourceDictionary>
    
     cc.Content = (string)FindResource("empty"); //Casts to string without exception
    

    【讨论】:

    • 你是对的......我尝试的时候可能在某个地方搞砸了。谢谢!
    • 虽然它在 Xaml 中不起作用.. 如果您尝试类似 &lt;TextBlock Text="{StaticResource Foo}"/&gt; 的操作,则会收到错误消息 StaticExtension 类型的对象无法应用于需要该类型的属性System.String
    • 嗯,设计师给出了那个错误。尝试重建,错误消失了。更改密钥,构建,将其更改回来并构建会使错误再次出现,并且在下一次构建之后它又消失了。似乎只是设计师的错误.. +1
    • @Meleak:这就是我在源代码编辑器中打开所有 XAML 文件的原因之一(其他原因是设计器很慢,而且我反正不使用它)...跨度>
    • @H.B. - 它在 .NET4.0 中运行良好,但在 .Net3.5 中运行良好。我用转换器看了它。对于转换器中的 4.0,value 是空字符串,但对于 3.5,value 是 StaticExtension 的对象。 3.5怎么办?有什么想法吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 2011-04-28
    • 1970-01-01
    • 2011-01-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多