Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在WPF应用程序中将数据收集绑定到DataGrid?_C#_Wpf - Fatal编程技术网

C# 如何在WPF应用程序中将数据收集绑定到DataGrid?

C# 如何在WPF应用程序中将数据收集绑定到DataGrid?,c#,wpf,C#,Wpf,我正在使用MVVM设计模式编写一个小型WPF应用程序。我想创建一个CRUD,就像我在DataGrid中显示数据一样 如何将数据网格中的每一行绑定到我的地址模型 下面是我的视图模型的外观 public class AddressViewModel : ViewModel { public IEnumerable<Address> Addresses { get; set; } // .... stripped for simplicity. } 公共类地址ViewM

我正在使用MVVM设计模式编写一个小型WPF应用程序。我想创建一个CRUD,就像我在
DataGrid
中显示数据一样

如何将
数据网格
中的每一行绑定到我的
地址
模型

下面是我的视图模型的外观

public class AddressViewModel : ViewModel
{
    public IEnumerable<Address> Addresses { get; set; }

    // .... stripped for simplicity.
}
公共类地址ViewModel:ViewModel
{
公共IEnumerable地址{get;set;}
//……为了简单起见,脱光了衣服。
}
以下是我的看法

<DataGrid>
    <DataGrid.ItemsSource>
        <CompositeCollection>
            <Binding Path="Addresses" />
        </CompositeCollection>
    </DataGrid.ItemsSource>
    <DataGrid.Columns>
        <DataGridTextColumn Header="Address" />
        <DataGridTextColumn Header="City" />
        <DataGridTextColumn Header="State" />
        <DataGridTextColumn Header="Zip Code" />
        <DataGridTextColumn Header="Country" />
        <DataGridTextColumn Header="County" />
    </DataGrid.Columns>
</DataGrid>

您需要将Datagrid的DataContext设置为集合

在XAML中命名datagrid,以帮助处理代码,如下所示:

 <DataGrid Name="dgAddresses">

因此,如果您这样创建IEnumerable(我假设您正在以其他方式创建并填充该列表):

var addressList=new IEnumerable();
dgAddresses.DataContext=地址列表;

您需要将每列的
绑定
属性设置为绑定到
地址
类的公共属性的绑定:

<DataGrid x:Name="dg" ItemsSource="{Binding Addresses}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Address" Binding="{Binding Address}" />
        <DataGridTextColumn Header="City" Binding="{Binding City}" />
        <DataGridTextColumn Header="State" Binding="{Binding State}" />
        ...
    </DataGrid.Columns>
</DataGrid>

@MikeA:可能重复:请记住投票选出有用的答案:)
<DataGrid x:Name="dg" ItemsSource="{Binding Addresses}" AutoGenerateColumns="False">
    <DataGrid.Columns>
        <DataGridTextColumn Header="Address" Binding="{Binding Address}" />
        <DataGridTextColumn Header="City" Binding="{Binding City}" />
        <DataGridTextColumn Header="State" Binding="{Binding State}" />
        ...
    </DataGrid.Columns>
</DataGrid>
dg.DataContext = new AddressViewModel();