我已经用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