Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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中读取数据网格的值_C#_Wpf_Datagrid - Fatal编程技术网

C# 在WPF中读取数据网格的值

C# 在WPF中读取数据网格的值,c#,wpf,datagrid,C#,Wpf,Datagrid,我需要在WPF应用程序中读取数据网格中一列的所有值 for (int i = 0; i < dgridList.Items.Count; i++) { DataGridRow row = (DataGridRow)dgridList.ItemContainerGenerator.ContainerFromIndex(i); TextBlock t_name = dgridList.Columns[0]

我需要在WPF应用程序中读取数据网格中一列的所有值

for (int i = 0; i < dgridList.Items.Count; i++)
            {
                DataGridRow row = (DataGridRow)dgridList.ItemContainerGenerator.ContainerFromIndex(i);

                TextBlock t_name = dgridList.Columns[0].GetCellContent(row) as TextBlock;
                TextBlock t_type = dgridList.Columns[1].GetCellContent(row) as TextBlock;
                Tuple<string, string> mod = new Tuple<string, string>(t_name.Text, t_type.Text);
                Alist.Add(mod);
            }
如果我试图读取数据网格中的值(超过4项),我会遇到这个错误


如何解决此问题。

如果您已将
DataGrid
ItemsSource
属性设置为
IEnumerable
,则只需迭代所有
YourClass
对象并获取其属性值:

foreach (var item in dgridList.Items.OfType<YourClass>())
{
    var name = item.t_name;
    var type = item.t_type;
    Tuple<string, string> mod = new Tuple<string, string>(name, type);
    Alist.Add(mod);
}
foreach(dgridList.Items.OfType()中的变量项)
{
变量名称=item.t\u名称;
var类型=item.t\u类型;
Tuple mod=新的Tuple(名称、类型);
列表添加(mod);
}
XAML

<DataGrid  ColumnWidth="*" 
       IsReadOnly="True"
       AutoGenerateColumns="False"
       SelectionMode="Single" 
       HorizontalScrollBarVisibility="Auto"
       VerticalScrollBarVisibility="Auto"
       ScrollViewer.CanContentScroll="True"
       ItemsSource="{Binding MyData}"
       SelectedItem="{Binding Item}"
 >
<DataGrid.Columns>
    <DataGridTextColumn Header="Nº." Binding="{Binding NumberProperty}" MinWidth="100" With="Auto"/>
    <DataGridTextColumn Header="Name" Binding="{Binding NameProperty}" Width="*"/>
</DataGrid.Columns>

帮自己一个忙,学习MVVM。这和其他“问题”不再是问题了。
foreach (var item in dgridList.Items.OfType<YourClass>())
{
    var name = item.t_name;
    var type = item.t_type;
    Tuple<string, string> mod = new Tuple<string, string>(name, type);
    Alist.Add(mod);
}
<DataGrid  ColumnWidth="*" 
       IsReadOnly="True"
       AutoGenerateColumns="False"
       SelectionMode="Single" 
       HorizontalScrollBarVisibility="Auto"
       VerticalScrollBarVisibility="Auto"
       ScrollViewer.CanContentScroll="True"
       ItemsSource="{Binding MyData}"
       SelectedItem="{Binding Item}"
 >
<DataGrid.Columns>
    <DataGridTextColumn Header="Nº." Binding="{Binding NumberProperty}" MinWidth="100" With="Auto"/>
    <DataGridTextColumn Header="Name" Binding="{Binding NameProperty}" Width="*"/>
</DataGrid.Columns>
private ObservableCollection<MyData> _myData;
private MyData _selectdItem;

public ObservableCollection<MyData> DataCollection 
{
    get { return _myData; }
    set { _myData = value; OnPropertyChanged("DataCollection"); }
}
//Your current selected item in the datagrid
public MyData Item
{
    get { return _selectdItem; }
    set
    {
        _selectdItem = value;
        OnPropertyChanged("Item");
    }
}
private void ReadAllItems()
{
    foreach (var item in DataCollection)
    {
        var mod = new Tuple<string, string>(item.Number, item.Name);
        Alist.Add(mod);
    }
}
private void LoadDataCollection()
{
    using (var db = new YourContext())
    {
        //Your DataGrid will fill here
        DataCollection = new ObservableCollection<MyData> ( db.YourEntity.List() )
    }
}