Je veux créer un datatemplate (en code, mais ce n'est pas le point) qui me permet de cliquer sur un élément et de définir sa valeur booléenne. Ce que j'ai réussi à créer était une combinaison de CheckBox et TextBlock, qui est colorée en fonction de la valeur de bool. Jusqu'ici tout va bien ... Mais comment dire à WPF: Si quelqu'un clique sur le TextBlock, changez la valeur de booléen. (supprimant la nécessité de la case à cocher laide)Utilisation d'un DataTemplate pour attacher OnClick au changement booléen
code à ce jour et travail:
var dT = new DataTemplate(typeof(DirectoryWrapper));
var stackPanel = new FrameworkElementFactory(typeof(StackPanel));
var style = new Style(typeof(TextBlock));
var t = new DataTrigger() {Binding = new Binding(DirectoryWrapper.PropString(x => x.IsSelected)), Value = true};
t.Setters.Add(new Setter() { Property = TextBox.ForegroundProperty, Value = new SolidColorBrush(Colors.Green) });
style.Triggers.Add(t);
var box = new FrameworkElementFactory(typeof(CheckBox));
box.SetBinding(CheckBox.IsCheckedProperty, new Binding(DirectoryWrapper.PropString(x => x.IsSelected)));
stackPanel.AppendChild(box);
var entry = new FrameworkElementFactory(typeof(TextBlock));
entry.SetBinding(TextBlock.TextProperty, new Binding(DirectoryWrapper.PropString(x => x.Path)));
entry.SetValue(TextBox.StyleProperty, style);
stackPanel.AppendChild(entry);
dT.VisualTree = stackPanel;
return dT;
Ce sont des moments où j'aime vraiment WPF. Travaillé comme un charme. Postet code pour votre solution ci-dessous dans un post séparé (pour les autres qui pourraient avoir besoin d'échantillons de code au lieu de XAML) –
+1 pour solution de travail! Je cherchais une solution de contournement, mais cela fonctionne comme un charme! –