我想创建一个datatemplate(在代码中,但那不是重点),它允许我单击一个项目并设置它的布尔值。我设法创建的是CheckBox和TextBlock的组合,它根据bool值着色。使用DataTemplate将OnClick附加到布尔变化
到目前为止这么好...但我怎么能告诉WPF:如果有人点击TextBlock,更改布尔值。(消除对丑陋的复选框的需要)到目前为止
代码和工作:
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;
这是时刻,当我真的很喜欢WPF。像魅力一样工作。 Postet代码为您的解决方案在下面单独发布(对于其他可能需要代码示例代替XAML) – 2009-11-17 12:22:44
+1工作解决方案!我正在寻找一种解决方法,但这种方法就像魅力一样! – 2010-10-26 07:44:22