带有数据指标的DataGrid保持空白,但集合具有对象



我已经用wpf中的集合级进行了数据列表。我为装订做了以下内容。

收集级:

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);
    }

单击搜索按钮时应填充该集合。但是,当我调用页面时,我向我显示了一个空排。因此,如果集合为空,数据杂志中应该没有行,对吗?我不会在窗户的另一个地方填充该集合,我检查了该系列是否真的很空。所以我不明白为什么有一个空行。

XAML结合代码:

<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>

选择工作。我检查了一下,该集合装有正确的对象,但是数据杂志保持空,我不知道为什么。有人知道问题是什么还是我对绑定有问题?

我在另一个页面上有一个带有其他集合的页面中有第二个数据,但具有相同的结构,并且可以正常工作。

我认为您在此行中创建了Zeichnungen的新实例

zeichnungen = DBZugriff.DBZugriff.findDrawings(projektID, txtZeichnungsnummer.Text, tagID, status, mmsSachmerkmal, dokTyp, extension, volIndex);

因此,您最好将foreach与添加一起填充。

foreach(var item in  DBZugriff.DBZugriff.findDrawings(projektID, txtZeichnungsnummer.Text, tagID, status, mmsSachmerkmal, dokTyp, extension, volIndex))
{
  zeichnungen.Add(item);
}

使用InotifyPropertyChanged和Bindings

更好地切换到MVVM

最新更新