J'essaye de charger un DataTemplate en code-behind, mais cela fonctionne très bien si je supprime le convertisseur ... mais dès que je le mets dedans, il souffle. Maintenant, j'ai défini mon état de mon état et placé la référence à mon convertisseur dans XAML. par exemple:DataTemplate avec convertisseur dans le code derrière
<Window.Resources>
<local:StatCellConverter x:Key="myConverter" />
</Window.Resources>
et c'est ma méthode où je produis un DataTemplate:
private DataTemplate GenerateStatRowDataTemplate()
{
ParserContext pc = new ParserContext();
pc.XmlnsDictionary.Add("", "http://schemas.microsoft.com/winfx/2006/xaml/presentation");
pc.XmlnsDictionary.Add("x", "http://schemas.microsoft.com/winfx/2006/xaml");
pc.XmlnsDictionary.Add("xcdg", "http://schemas.xceed.com/wpf/xaml/datagrid");
string statRowTemplate = "<DataTemplate><xcdg:StatRow>";
statRowTemplate += "<xcdg:StatCell FieldName=\"Column4\" ResultPropertyName=\"AvgColumn4\">";
statRowTemplate += "<xcdg:StatCell.ContentTemplate>";
statRowTemplate += "<DataTemplate>";
statRowTemplate += "<TextBlock Text=\"{Binding ., Converter={StaticResource ResourceKey=myConverter}}\" />";
statRowTemplate += "</DataTemplate>";
statRowTemplate += "</xcdg:StatCell.ContentTemplate>";
statRowTemplate += "</xcdg:StatCell>";
statRowTemplate += "</xcdg:StatRow>";
statRowTemplate += "</DataTemplate>";
StringReader stringReader = new StringReader(statRowTemplate);
XmlReader xmlReader = XmlReader.Create(stringReader);
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(statRowTemplate.ToString()));
DataTemplate dt = (DataTemplate)XamlReader.Load(ms,pc);
dt.LoadContent();
return dt;
}
Qu'est-ce que je fais mal? Serait-ce que je devrais aussi définir mon convertisseur en code?
Mon Converter
public class StatCellConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
Debug.WriteLine(value);
if (value.Equals("#DIV/0#"))
return "0";
return value;
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
je reçois une exception en disant qu'il ne peut pas charger le DataTemplate
S'il vous plaît poster votre votre convertisseur et de définir « il coups " – Paparazzi
J'ai modifié la question –
Je l'ai compris. J'ai dû mettre les ressources dans le code derrière ... chaîne statRowTemplate = ""; statRowTemplate + = " DataTemplate.Resources>"; –