J'ai vérifié ces réponses, mais aucun n'a eu l'information que je cherche:
How to setup a WPF datatemplate in code for a treeview?
How to set Control Template in code?
Create ControlTemplate programmatically in WPFCréer ControlTemplate dans le code, comment spécifier le convertisseur dans la liaison
Voici l'essentiel de mon code:
DataGridTextColumn col = new DataGridTextColumn();
Style styl = null;
// Need to add this on a per-column basis
// <common:RequiredPropertyDisplayBrushConverter x:Key="requiredDisplayBrushConverter" />
string xaml = "<ControlTemplate TargetType=\"{x:Type DataGridCell}\"> <TextBox Background=\"{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content.Text, Converter={StaticResource requiredDisplayBrushConverter} > </TextBox> </ControlTemplate>";
MemoryStream sr = new MemoryStream(Encoding.ASCII.GetBytes(xaml));
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");
ControlTemplate ct = (ControlTemplate)XamlReader.Load(sr, pc);
styl.Setters.Add(new Setter(TemplateProperty, ct));
col.CellStyle = styl;
Dans ControlTemplate, une liaison fait référence au convertisseur mentionné dans les commentaires. Lorsque le convertisseur est défini dans le xaml comme une ressource pour le DataGrid, j'obtiens une erreur d'exécution: {"Impossible de trouver la ressource 'requiredDisplayBrushConverter'.) Les noms de ressources sont sensibles à la casse."}
Puis-je ajouter ceci comme ressource au colonne? Ou ajoutez-le aux ressources du DataGrid lors de l'exécution?
Ou y a-t-il une autre technique?
Merci -
Merci! J'ai complètement oublié de l'ajouter à app.xaml. J'apprécie l'autre explication aussi. – Number8
De rien. Content d'avoir ajouté cette partie sur app.xaml. Je ne pensais vraiment pas que cela s'appliquait à votre situation. Je déteste demander, mais ... pouvez-vous accepter ma réponse? –