C# 如何将property的属性绑定到DataGridColumn?

C# 如何将property的属性绑定到DataGridColumn?,c#,wpf,entity-framework,binding,datagrid,C#,Wpf,Entity Framework,Binding,Datagrid,我正在使用实体框架创建我的系统,我将对象属性绑定到一个数据网格,每个字段都显示数据,但只是一个属性Fornecedor,是另一个类,不能在第一次显示,它只会在我打开新的注册窗口并关闭时显示,我不知道它为什么会这样做,因为我对构造函数中的show list和NewRegister.Closed使用了相同的方法,所以暂停我的类 public class Produto { public int Id { get; set; } public string Codigo { get;

我正在使用实体框架创建我的系统,我将对象属性绑定到一个
数据网格
,每个字段都显示数据,但只是一个属性
Fornecedor
,是另一个类,不能在第一次显示,它只会在我打开新的注册窗口并关闭时显示,我不知道它为什么会这样做,因为我对构造函数中的show list和NewRegister.Closed使用了相同的方法,所以暂停我的类

public class Produto
{
    public int Id { get; set; }
    public string Codigo { get; set; }
    public string Linha { get; set; }
    public int Comprimento { get; set; }
    public int Largura { get; set; }
    public string Cor { get; set; }
    public string CorPe { get; set; }
    public int Gaveta { get; set; }
    public Fornecedor Fornecedor { get; set; }   // <- Fornecedor is other class
    public byte[] Foto { get; set; }
    public int Estoque { get; set; }
    public float ValorCompra { get; set; }
    public float ValorVenda { get; set; }
}
因此,我为我的窗口设置了
DataContext
,并为
DataGridTextColumns

public PageMesa()
{
    InitializeComponent();
    ShowList();
}

private void ShowList()
{
    listMesa.ItemsSource = db.Mesas.ToList();
}

private void NewCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{
    MesaEditar NewRegister = new MesaEditar();
    NewRegister.Closed += (s, arg) => { ShowList(); };
    NewRegister.ShowDialog();
}
我的数据网格

<DataGrid Name="listMesa" Grid.Row="1" Margin="10,0" AutoGenerateColumns="False" IsReadOnly="True">
    <DataGrid.Columns>
        <DataGridTextColumn Header="ID" Binding="{Binding Id}" Width="1*" />
        <DataGridTextColumn Header="Codigo" Binding="{Binding Codigo}" Width="2*" />
        <DataGridTextColumn Header="Linha" Binding="{Binding Linha}" Width="2*" />
        <DataGridTextColumn Header="Comprimento" Binding="{Binding Comprimento}" Width="3*" />
        <DataGridTextColumn Header="Largura" Binding="{Binding Largura}" Width="3*" />
        <DataGridTextColumn Header="Cor" Width="2*">
            <DataGridTextColumn.CellStyle>
                <Style TargetType="DataGridCell">
                    <Setter Property="Background" Value="{Binding Cor}" />
                </Style>
            </DataGridTextColumn.CellStyle>
        </DataGridTextColumn>
        <DataGridTextColumn Header="Cor do pé" Binding="{Binding CorPe}" Width="4*" />
        <DataGridTextColumn Header="Gaveta" Binding="{Binding Gaveta}" Width="2*" />
        <DataGridTextColumn Header="Fornecedor" Binding="{Binding Fornecedor.Nome}" Width="4*" />
        <DataGridTextColumn Header="Estoque" Binding="{Binding Estoque}" Width="2*" />
        <DataGridTextColumn Header="Valor da compra" Binding="{Binding ValorCompra, StringFormat=R$0.00}" Width="4*" />
        <DataGridTextColumn Header="Valor da venda" Binding="{Binding ValorVenda, StringFormat=R$0.00}" Width="4*" />
    </DataGrid.Columns>
</DataGrid>

为什么会发生这种情况?
对不起,我的表达不好,我不知道如何表达这个问题,请问我每个问题

不可能理解问题是什么,为什么不提供datagrid以及Forcender和Produto上面的类的使用位置示例。如果您想要属性的属性,则必须提供完全限定名称:
Key=“Fornecedor.Nome”
。只需对所有要显示的属性重复此操作。你能显示你的XAML吗?你确定
Fornecedor
不为空吗?对不起,我忘记发布我的数据网格了
<DataGrid Name="listMesa" Grid.Row="1" Margin="10,0" AutoGenerateColumns="False" IsReadOnly="True">
    <DataGrid.Columns>
        <DataGridTextColumn Header="ID" Binding="{Binding Id}" Width="1*" />
        <DataGridTextColumn Header="Codigo" Binding="{Binding Codigo}" Width="2*" />
        <DataGridTextColumn Header="Linha" Binding="{Binding Linha}" Width="2*" />
        <DataGridTextColumn Header="Comprimento" Binding="{Binding Comprimento}" Width="3*" />
        <DataGridTextColumn Header="Largura" Binding="{Binding Largura}" Width="3*" />
        <DataGridTextColumn Header="Cor" Width="2*">
            <DataGridTextColumn.CellStyle>
                <Style TargetType="DataGridCell">
                    <Setter Property="Background" Value="{Binding Cor}" />
                </Style>
            </DataGridTextColumn.CellStyle>
        </DataGridTextColumn>
        <DataGridTextColumn Header="Cor do pé" Binding="{Binding CorPe}" Width="4*" />
        <DataGridTextColumn Header="Gaveta" Binding="{Binding Gaveta}" Width="2*" />
        <DataGridTextColumn Header="Fornecedor" Binding="{Binding Fornecedor.Nome}" Width="4*" />
        <DataGridTextColumn Header="Estoque" Binding="{Binding Estoque}" Width="2*" />
        <DataGridTextColumn Header="Valor da compra" Binding="{Binding ValorCompra, StringFormat=R$0.00}" Width="4*" />
        <DataGridTextColumn Header="Valor da venda" Binding="{Binding ValorVenda, StringFormat=R$0.00}" Width="4*" />
    </DataGrid.Columns>
</DataGrid>