我想使用C#(WPF)以编程方式将Grid
(可能包含图像,按钮或任何其他控件)添加到DataGrid
。我也尝试使用以下代码进行测试:
public class DataGridItem
{
public string Path { get; set; }
public Grid Stats;
}
,xaml代码与DataGrid
列相同:
<DataGridTextColumn Header="h1" Binding="{Binding Path}"/>
<DataGridTemplateColumn Width="100" Header="h2">
,并在后面编码为(在按钮中):
var g = new Grid()
{
Background = System.Windows.Media.Brushes.Black
};
var tb = new TextBlock()
{
Text = DateTime.Now.ToString()
};
g.Children.Add(tb);
Dg.Items.Add(
new DataGridItem()
{
Path = DateTime.Now.ToString(),
Stats = g
});
我尝试为Binding
列设置h2
,但是由于它是DataGridTemplateColumn
,所以无法。有什么方法可以将h2
的绑定设置为h1
列?
或者,是否可以通过编程方式将Grid
添加到DataGrid
?
答案 0 :(得分:0)
timestamp
答案 1 :(得分:0)
有什么方法可以将h2的绑定设置为h1列?
否。
或者,有没有办法以编程方式将Grid添加到DataGrid?
您可以通过编程方式创建CellTemplate
:
DataGridTemplateColumn h2 = Dg.Columns[1] as DataGridTemplateColumn;
const string Xaml = "<DataTemplate xmlns=\"http://schemas.microsoft.com/winfx/2006/xaml/presentation\"><ContentControl Content=\"{Binding Stats}\" /></DataTemplate>";
h2.CellTemplate = XamlReader.Parse(Xaml) as DataTemplate;
示例XAML:
<DataGrid x:Name="Dg">
<DataGrid.Columns>
<DataGridTextColumn Header="h1" Binding="{Binding Path}"/>
<DataGridTemplateColumn Width="100" Header="h2" />
</DataGrid.Columns>
</DataGrid>