Рабочий раунд действительно будет зависеть от того, почему вы хотите включить сырого Guid в Xaml.
Вы не можете использовать sys:Guid
так, как пытаетесь, потому что Xaml не знает, как преобразовать содержимое элемента в экземпляр структуры 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" />