Un tour de travail serait vraiment dépendre de la raison pour laquelle vous souhaitez inclure une Guid cru en XAML en premier lieu.
Vous ne pouvez pas utiliser sys:Guid
comme vous le souhaitez car Xaml n'a aucun moyen de savoir comment convertir le contenu de l'élément en une instance d'une structure Guid. En fait, vous ne pouvez pas inclure un sys:Guid
vide bien que je ne sais pas pourquoi vous ne pouvez pas faire cela (pas qu'il serait utile de le faire de toute façon).
Toutefois, si vous essayez d'affecter une valeur à une propriété sur une instance d'un type que vous contrôlez, vous pouvez contourner ce problème avec un convertisseur de type. Tout d'abord ajouter un GuidConverter
à votre projet: -
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);
}
}
}
décorer maintenant la propriété de votre type avec un attribut TypeConverter
:
[TypeConverter(typeof(GuidConverter))]
public Guid MyGuidValue {get; set; }
Maintenant dans votre XAML vous pouvez le faire: -
<local:MyType MyGuidValue="F16095D1-1954-4C33-A856-2BDA87DFD371" />
Merci! Je vais essayer ça! – Sai