我有一个DataGrid
用XAML编写的WPF,正在转换为C#(不要问)。
看起来像这样(为简洁起见,省略了一些属性):
var Card = new DataGrid() {
Background = Brushes.LightYellow,
BorderBrush = Brushes.DimGray,
ColumnWidth = new DataGridLength(100),
Columns = {
new DataGridTextColumn() {
Binding = new Binding("In"),
Header = "In"
},
new DataGridTextColumn() {
Binding = new Binding("Out"),
Header = "Out"
},
new DataGridTextColumn() {
Binding = new Binding("Hours"),
Header = "Hours"
}
},
RowHeaderTemplate = new DataTemplate(typeof(DataGridRowHeader)) {
VisualTree = Days
},
RowHeaderWidth = 115,
RowHeight = 50
};
Days
设置如下:
var Days = new FrameworkElementFactory(typeof(TextBlock));
Days.SetBinding(TextBlock.TextProperty, new Binding("Day"));
Days.SetValue(TextBlock.BackgroundProperty, Brushes.Lime);
运行时,DataGrid
的RowHeader
为空白(而LightYellow
不是Lime
)。
我也尝试过Card.RowHeaderTemplate.VisualTree = Days;
,但无济于事。
我要去哪里错了?如何以RowHeaderTemplate
编程方式设置?
应使用从XAML加载来创建模板。使用元素工厂已过时,不再受支持(在某些情况下可能会起作用,但在其他情况下则不会)。
public static DataTemplate DefaultHeaderTemplate = (DataTemplate)
#if SILVERLIGHT || WinRT
XamlReader.Load(
#else
XamlReader.Parse(
#endif
"<DataTemplate " +
" xmlns='http://schemas.microsoft.com/winfx/2006/xaml/presentation'>" +
" <TextBlock Text=\"{Binding DisplayName, Mode=TwoWay}\" />" +
"</DataTemplate>"
);
您可能会发现另一个有用的链接:以正确的方式用代码创建WPF数据模板。它包括一个使用XML和XAML类创建XAML字符串的示例,并引用了程序集和内容。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句