一个工作一轮真的取决于你为什么要包括在XAML原始的Guid摆在首位。
由于Xaml无法知道如何将元素的内容转换为Guid结构的实例,因此无法按照您尝试的方式使用sys:Guid
。事实上,你不能包括一个空的sys:Guid
,虽然我不知道你为什么不能这么做(不是说这样做永远不会有用)。
但是,如果您试图为您控制的类型的实例上的属性赋值,则可以使用类型转换器来处理该属性。首先添加GuidConverter
到您的项目: -
using System;
using System.ComponentModel;
using System.Globalization;
namespace SilverlightApplication1
{
public class GuidConverter : TypeConverter
{
public override bool CanConvertFrom(ITypeDescriptorContext context, Type sourceType)
{
return sourceType == typeof(string);
}
public override bool CanConvertTo(ITypeDescriptorContext context, Type destinationType)
{
return destinationType == typeof(string);
}
public override object ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, object value)
{
return new Guid((string)value);
}
public override object ConvertTo(ITypeDescriptorContext context, CultureInfo culture, object value, Type destinationType)
{
return ((Guid)value).ToString("", culture);
}
}
}
现在有TypeConverter
属性装饰你的类型的属性:
[TypeConverter(typeof(GuidConverter))]
public Guid MyGuidValue {get; set; }
现在在XAML中,你可以这样做: -
<local:MyType MyGuidValue="F16095D1-1954-4C33-A856-2BDA87DFD371" />
谢谢!我会试试这个! – Sai 2009-12-16 11:47:25