如何在WPF中遍历Datagrid?

时间:2017-08-03 13:06:17

标签: c# wpf

我的WPF中有一个数据网格视图。我在其中映射项目源。数据网格视图包含所有行中的复选框。用户可以选中或取消选中某些行。所以我想迭代数据网格行和单元格值知道所选择的行。我尝试了互联网上存在的所有东西,但没有任何帮助。请帮助我解决我的pbm

1 个答案:

答案 0 :(得分:-1)

首先阅读有关MVVM模式的内容。

你需要一个模特。那应该实现INotifyPropertyChanged接口。并且每个属性设置器都应该调用OnPropertyChanged()方法。我留给你的实施。

   public class Model
{
    public string Name { get; set; }
    public bool IsChecked { get; set; }
}

您需要一个视图模型。

public class ViewModel
{
    public ObservableCollection<Model> MyList { get; set; }

    public ViewModel()
    {
        MyList = new ObservableCollection<Model>();
        MyList.Add(new Model() { Name = "John", IsChecked = true });
        MyList.Add(new Model() { Name = "Bety", IsChecked = false });
        MyList.Add(new Model() { Name = "Samuel", IsChecked = true });
    }
}

在视图中正确绑定。

<Window x:Class="WpfApp4.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    xmlns:local="clr-namespace:WpfApp4"
    mc:Ignorable="d"
    Title="MainWindow" Height="350" Width="525">
<Window.DataContext>
    <local:ViewModel></local:ViewModel>
</Window.DataContext>
<Grid>
    <DataGrid ItemsSource="{Binding MyList}" AutoGenerateColumns="False" CanUserAddRows="False">
        <DataGrid.Columns>
            <DataGridTextColumn Header="Description" Binding="{Binding Name}"/>
            <DataGridCheckBoxColumn Header="Select" Binding="{Binding IsChecked, UpdateSourceTrigger=PropertyChanged}"/>
        </DataGrid.Columns>
    </DataGrid>
</Grid>

然后在视图模型中迭代MyList,并使用Checked / Unchecked项目执行您想要的操作。