1
我已经使用WPF中的Collection-Class对DataGrid进行了数据绑定。 我为绑定做了以下事情。Datagrid与数据绑定保留为空,但集合具有对象
收藏级:
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上。但是当我打电话给我时,它向我显示了一个空行。所以如果Collection是空的,Datagrid中不应该有行,对吧?我不会在窗口的其他位置填充该集合,并且检查该集合是否真的是空的。所以我不明白为什么有一个空行。
的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>
的选择工作。我检查了这一点,并收集充满了正确的对象,但DataGrid保持空白,我不知道为什么。 有人有一个想法问题是什么或者我有什么错误的绑定?
我在这个项目中的第二个DataGrid与其他集合的其他页面,但具有相同的结构,像这样,它在那里工作正常。
非常感谢您!这是我的代码中的错误。现在它工作正常。 – Only3lue
也许你可以帮我解决上面提到的一个小问题。一个空行就像当我加载页面作为DataGrid中的最后一个元素一样。我该如何解决这个问题? – Only3lue
在您的xaml中设置此属性:CanUserAddRows =“false” – blindmeis