Ich bin neu in WPF meine App haben ein einfaches Fenster mit Datagrid und eine Schaltfläche zum Lesen aller Zellen drin - jedes Mal, wenn ich Fehler für bekomme nULL-Verweis, aber ich weiß nicht, warum (mein Gitter Bindung und Daten)Fehler: Objektreferenz nicht auf eine Instanz eines Objekts gesetzt - Datagrid in WPF
Der XAML-Code:
<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid AutoGenerateColumns="False" Height="232" HorizontalAlignment="Left" Margin="12,67,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="479" Loaded="dataGrid1_Loaded">
<DataGrid.Columns>
<DataGridTextColumn Binding="{Binding Sheba}" Header="شماره شبا" MinWidth="200"> </DataGridTextColumn>
<DataGridTextColumn Width="*" Binding="{Binding TrueFalse}" Header="صحت شماره شبا" > </DataGridTextColumn>
<DataGridTextColumn Width="*" Binding="{Binding Country}" Header="کشور"> </DataGridTextColumn>
<DataGridTextColumn Width="*" Binding="{Binding BankName}" Header="نام بانک"> </DataGridTextColumn>
</DataGrid.Columns>
</DataGrid>
<Button Content="Button" Height="25" HorizontalAlignment="Left" Margin="36,26,0,0" Name="button1" VerticalAlignment="Top" Width="85" Click="button1_Click" />
<Button Content="remove" Height="21" HorizontalAlignment="Left" Margin="136,32,0,0" Name="button2" VerticalAlignment="Top" Width="79" Click="button2_Click" />
</Grid>
und Code hinter der Bindung Datagrid
public class RowsDatas
{
public string Sheba { get; set; }
public string TrueFalse { get; set; }
public string Country { get; set; }
public string BankName { get; set; }
}
private List<RowsDatas> LoadCollectionData()
{
List<RowsDatas> authors = new List<RowsDatas>();
for (int i = 0; i < 10; i++)
{
authors.Add(new RowsDatas()
{
Sheba = "111111",
TrueFalse = "TrueFalse",
Country = "5555",
BankName = "Bank",
});
}
return authors;
}
private void dataGrid1_Loaded(object sender, RoutedEventArgs e)
{
dataGrid1.ItemsSource = LoadCollectionData();
}
0 passieren
Und mein Code für Button und wo der Fehler ist hier:
private void button1_Click(object sender, RoutedEventArgs e)
{
string sHeaders = "";
string stOutput = "";
for (int j = 0; j < dataGrid1.Columns.Count; j++)
sHeaders = sHeaders.ToString() + Convert.ToString(dataGrid1.Columns[j].Header) + "\t";
stOutput += sHeaders + "\r\n";
for (int i = 0; i < dataGrid1.Items.Count - 1; i++)
{
string stLine = "";
for (int j = 0; j < dataGrid1.Columns.Count - 1; j++)
{
**//Error: Object reference not set to an instance of an object.**
string a = (dataGrid1.Items[i] as DataRowView).Row.ItemArray[j].ToString();
stLine = stLine.ToString() + "\t";
stOutput += stLine + "\r\n";
}
}
}
this "(dataGrid1.Items [i] als DataRowView)" ist Null und ich weiß nicht, warum Khow?
bitte helfen Sie mir THX.
Mit 'dataGrid1.ItemsSource = LoadCollectionData();' weisen Sie die ItemsSource-Eigenschaft einer Sammlung von 'RowsDatas' zu. Ganz offensichtlich sind die Elemente nicht vom Typ 'DataRowView'. Deshalb gibt 'dataGrid1.Items [i] als DataRowView' null zurück. – Clemens
Sie füllen das DataGrid mit einer Liste und versuchen, eine Zeile zu lesen, da es ein DataRowView ist. Natürlich ist das ein Null und jeder Code danach ist eine nullreferenceexception –
Steve
So leid für meine Duplikate und Anfänger Frage und dankbar für Ihre Kommentare und Antworten - aber eine Frage wie kann ich meine "RowsDatas" oder "als DataRowView" ändern, um Cell zu erreichen Werte in diesem Datagrid? Danke –