Я создал привязку данных к DataGrid с Collection-Class в WPF. Я сделал следующие вещи для привязки.Datagrid with Databinding остается пустым, но коллекция имеет объекты
Коллекция-Класс:
internal class ZeichnungCollection : ObservableCollection<ZeichnungInDB>
{
public ZeichnungCollection() : base()
{
}
}
Объект-класс для коллекции:
class ZeichnungInDB : ISerializable
{...//Properties and Constructors
public void GetObjectData(SerializationInfo info, StreamingContext context)
{
this.GetObjectData(info, context);
info.AddValue("Zeichnungsnummer", Zeichnungsnummer, typeof(string));
info.AddValue("Index", Index, typeof(string));
info.AddValue("Volante-Index", Volante_Index, typeof(int));
info.AddValue("Änderung Intern", Aenderung_Int, typeof(string));
info.AddValue("Änderung Extern", Aenderung_Ext, typeof(string));
}
}
Кодекс окна:
public Anzeigen()
{
InitializeComponent();
zeichnungen = new ZeichnungCollection();
dataInbox.ItemsSource = zeichnungen;
Keyboard.Focus(dataInbox);
}
private void btnSearch_Click(object sender, RoutedEventArgs e)
{
int volIndex = -1;
if (checkAktuell.IsChecked == true && !txtZeichnungsnummer.Equals(""))
{
volIndex = DBZugriff.DBZugriff.getVolCountByDrawingNumber(txtZeichnungsnummer.Text);
}
int tagID = DBZugriff.DBZugriff.getTagIdByTag(txtTags.Text, int.Parse(txtProjektnummer.Text));
int projektID = DBZugriff.DBZugriff.getProjectIdByProjectnumber(int.Parse(txtProjektnummer.Text));
status = cmbStatus.Text;
mmsSachmerkmal = cmbMMSSachmerkmal.Text;
dokTyp = cmbDokTyp.Text;
extension = cmbDatEnd.Text;
zeichnungen.Clear();
zeichnungen = DBZugriff.DBZugriff.findDrawings(projektID, txtZeichnungsnummer.Text, tagID, status, mmsSachmerkmal, dokTyp, extension, volIndex);
CollectionViewSource.GetDefaultView(dataInbox.ItemsSource).Refresh();
Keyboard.Focus(dataInbox);
}
Коллекция должна быть заполнена при нажатии на Searchbutton. Но он показывает мне одну пустую строку, когда я вызываю страницу. Итак, если коллекция пуста, в Datagrid не должно быть строк, не так ли? Я не заполняю коллекцию в другом месте в окне, и я проверил, действительно ли коллекция пуста. Поэтому я не понимаю, почему есть одна пустая строка.
Часть XAML-Binding Код:
<DataGrid x:Name="dataInbox" Grid.Row="1" Width="654" MaxHeight="500" AutoGenerateColumns="False" ItemsSource="{Binding Source=ZeichnungCollection}" HorizontalAlignment="Right" VerticalAlignment="Stretch" Margin="0,5">
<DataGrid.Columns>
<DataGridTextColumn Header="Zeichnungsnummer" Binding="{Binding Zeichnungsnummer, UpdateSourceTrigger=LostFocus}" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="Index" Binding="{Binding Index, UpdateSourceTrigger=LostFocus}" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="Volante-Index" Binding="{Binding Volante-Index, UpdateSourceTrigger=LostFocus}" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="Änderung Intern" Binding="{Binding Änderung Intern, UpdateSourceTrigger=LostFocus}" Width="Auto" IsReadOnly="True"/>
<DataGridTextColumn Header="Änderung Extern" Binding="{Binding Änderung Extern, UpdateSourceTrigger=LostFocus}" Width="Auto" IsReadOnly="True"/>
</DataGrid.Columns>
</DataGrid>
Выбор: работы. Я проверил это, и коллекция заполнена нужными объектами, но DataGrid остается пустым, и я не знаю, почему. У кого-то есть идея, в чем проблема или что-то не так с привязкой?
У меня есть второй DataGrid в этом проекте на другой странице с другой коллекцией, но с той же структурой, что и этот, и там он отлично работает.
Большое спасибо! Это была ошибка в моем коде. Теперь он работает нормально. – Only3lue
Возможно, вы можете помочь мне с небольшой проблемой, которую я нашел и упомянул выше. Одна пустая строка есть, например, когда я загружаю страницу как последний элемент в DataGrid. Как я могу это решить? – Only3lue
установить этот атрибут в свой xaml: CanUserAddRows = "false" – blindmeis