我正在使用MVVM设计模式编写一个小型WPF应用程序。我想创建一个CRUD,就像我在DataGrid
中显示数据一样。
如何将DataGrid
中的每一行绑定到我的Address
模型?
以下是我的View-Model的样子。
public class AddressViewModel : ViewModel
{
public IEnumerable<Address> Addresses { get; set; }
// .... stripped for simplicity.
}
以下是我的观点
<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>
答案 0 :(得分:0)
您需要将Datagrid的DataContext设置为集合
在XAML中命名您的数据网格,以帮助处理后面的代码,如下所示:
<DataGrid Name="dgAddresses">
因此,如果您像这样创建IEnumerable(我假设您正在以其他方式创建和填充该列表):
var addressList = new IEnumerable<Address>();
dgAddresses.DataContext = AddressList;
答案 1 :(得分:0)
您需要将每列的Binding
属性设置为绑定到Address
类的公共属性的绑定:
<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>
另外,请确保将DataContext
或其任何父元素的DataGrid
设置为视图模型类的实例:
dg.DataContext = new AddressViewModel();