2011-08-26 26 views
11

Tôi có một ResourceDictionary có chứa chuỗi:Làm thế nào để khai báo một chuỗi rỗng trong 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> 

từ điển này là một phần của một chủ đề, và trong một số chủ đề, một số chuỗi là rỗng:

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

vấn đề được rằng trong trường hợp đó, tôi nhận được một XamlParseException:

không thể tạo đối tượng của loại ' System.String '. CreateInstance thất bại, mà có thể được gây ra bởi không có một constructor mặc định nào cho 'System.String'

Tôi biết người ta có thể khai báo một chuỗi rỗng trong một nguồn tài nguyên mảng, sử dụng <x:Static Member="sys:String.Empty" />, nhưng tôi don' t muốn một mảng ... Sử dụng trực tiếp x:Static vì tài nguyên trả về phần mở rộng đánh dấu, không phải chuỗi. Đặt x:Static vào phần tử sys:String có cùng lỗi như trước.

Thậm chí có thể khai báo chuỗi trống dưới dạng tài nguyên XAML không? Làm sao?

Trả lời

16

Tuyên bố nó bằng cách sử x:Static dường như chỉ làm việc tốt cho tôi ...

<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

Bạn nói đúng ... tôi có lẽ sai lầm ở đâu đó khi tôi cố gắng. Cảm ơn! –

+1

Nó không hoạt động trong Xaml mặc dù .. nếu bạn thử một cái gì đó như '' bạn nhận được một lỗi nói ** Một đối tượng của kiểu StaticExtension không thể được áp dụng cho một thuộc tính mong đợi kiểu System.String ** –

+0

Hmm, nhà thiết kế đã đưa ra lỗi đó. Đã cố gắng xây dựng lại và lỗi biến mất. Thay đổi Khóa, xây dựng, thay đổi nó trở lại và xây dựng làm cho các lỗi trở lại và sau khi xây dựng tiếp theo nó đã biến mất một lần nữa. Chỉ cần một lỗi thiết kế có vẻ như .. +1 –

Các vấn đề liên quan