Ich versuche, eine Datentabelle auf einem Datagrid zu binden, um es dynamisch zu füllen. Das Datagrid scheint das Datatable zu finden, denn wenn ich es befülle und nach dem RaisePropertyChanged habe ich viele leere Zeilen. Es gibt auch keine Spalten.DataTable an DataGrid binden. WPF MVVM
Meine Ansicht:
<UserControl x:Class="NWViewer.View.DataGridView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:local="clr-namespace:NWViewer.View"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="300"
DataContext="{Binding DataGrid, Source={StaticResource Locator}}">
<Grid>
<DataGrid ItemsSource="{Binding oTable.DefaultView}" AutoGenerateColumns="True" ColumnWidth="25">
</DataGrid>
</Grid>
</UserControl>
Meine Viewmodel:
public DataTable oTable { get;set;}
private void getNewData(List<ElementBaseViewModel> rootElement)
{
oTable.Clear();
foreach (var element in rootElement)
{
buildFromChildren(element);
}
RaisePropertyChanged("oTable");
}
private void buildFromChildren(ElementBaseViewModel element)
{
if(element.Children != null)
{
if (isAttributeChildren(element))
{
DataRow oRow = oTable.NewRow();
foreach (var attribute in element.AttributeChildren)
{
Model.Attribute attr = (Model.Attribute)attribute.Element;
if (!oTable.Columns.Contains(attr.name))
oTable.Columns.Add(attr.name);
oRow[attr.name] = attr.Value;
}
oTable.Rows.Add(oRow);
}
foreach (var elem in element.ElementChildren)
{
buildFromChildren(elem);
}
}
}
und dies ist die graphische Rendering:
Aber die Datatable scheint richtig gefüllt, wenn ich es debuggen:
Bitte fügen Sie weitere Informationen hinzu ([siehe MCVE] (https://stackoverflow.com/help/mcve)). Es ist schwer zu helfen, wenn wir nicht wissen, was passiert, z. in 'buildFromChildren' – grek40