2011-08-26 12 views
11

Ho un ResourceDictionary che contiene le stringhe:Come dichiarare una stringa vuota in XAML 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> 

Questo dizionario è parte di un tema, e in alcuni temi, alcune delle stringhe sono vuote:

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

Il guaio è che in quel caso, ho un XamlParseException:

Impossibile creare l'oggetto di tipo ' System.String'. CreateInstance fallito, che può essere causato da non avere un costruttore predefinito pubblico per 'System.String'

So che è possibile dichiarare una stringa vuota in una risorsa array, utilizzando <x:Static Member="sys:String.Empty" />, ma I don' t voglio un array ... Usando x:Static direttamente come la risorsa restituisce l'estensione markup, non la stringa. Inserendo x:Static nell'elemento sys:String si ottiene lo stesso errore di prima.

È persino possibile dichiarare una stringa vuota come risorsa XAML? Come?

risposta

16

dichiararla utilizzando x:Static sembra funzionare bene per me ...

<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 
+0

Hai ragione ... Probabilmente ho incasinato da qualche parte quando ho provato. Grazie! –

+1

Tuttavia, non funziona in Xaml .. se si prova qualcosa come '' si riceve un errore dicendo ** Un oggetto del tipo StaticExtension non può essere applicato a una proprietà che si aspetta il tipo System.String ** –

+0

Hmm, il progettista stava dando quell'errore. Ho provato una ricostruzione e l'errore è scomparso. Cambiando la chiave, costruendola, cambiandola di nuovo e costruendola, l'errore si ripresenta e dopo la prossima build è sparito di nuovo. Solo un errore di progettazione sembra .. +1 –

Problemi correlati