【发布时间】:2015-08-01 03:27:07
【问题描述】:
我正在尝试创建一个 DataGrid(WPF) 类型的自定义控件,该控件接受一个字符串列表作为列,并且这些列将使用特定模板 进行更改(或自定义)。
目前我正在使用 `
FrameworkElementFactory buttonFact = new FrameworkElementFactory(typeof(Button));
Path path = new Path();
path.Stroke = System.Windows.Media.Brushes.Black;
path.StrokeThickness = 2;
path.Data = System.Windows.Media.Geometry.Parse("M0,5 H10,10");
buttonFact.SetValue(Button.ContentProperty, path);
但是当我这样做时,我收到异常说
不支持从 Visual 或 ContentElement 派生的值。
附件说我应该能够通过单击“+”或“-”来展开/折叠行。 谁能帮我解决这个问题?
【问题讨论】:
-
在 FrameworkElementFactory 实例上设置
Button.Content属性似乎没有意义。 -
来自Remarks on FrameworkElementFactory:这个类是一种以编程方式创建模板的弃用方式,它是FrameworkTemplate的子类,例如ControlTemplate或DataTemplate;当您使用此类创建模板时,并非所有模板功能都可用。以编程方式创建模板的推荐方法是使用 XamlReader 类的 Load 方法从字符串或内存流加载 XAML。
-
哦,感谢 Clemens 提供的信息,我现在知道了。
标签: c# wpf wpf-controls wpfdatagrid