将网格添加到DataGrid

时间:2019-02-13 16:57:17

标签: c# wpf binding grid wpfdatagrid

我想使用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

2 个答案:

答案 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>
相关问题