Mein DataGrid zeigt nichts an, aber meine gebundene Klasse enthält eine Datenzeile. Wie Sie sehen, wird meine MockSnifferSource-Klasse von List abgeleitet, die die Anforderung erfüllen sollte, dass meine Sammlung auf IList basiert.WPF DataGrid zeigt keine Liste an <>
<Window x:Class="WpfSniffer.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfSniffer"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid x:Name="dataGrid" Height="Auto" Width="Auto"
HorizontalAlignment="Stretch" Margin="0" VerticalAlignment="Stretch"
ItemsSource="{Binding}" AutoGenerateColumns="True">
<DataGrid.DataContext>
<local:MockSnifferSource/>
</DataGrid.DataContext>
</DataGrid>
</Grid>
public class MockSnifferSource : List<SnifferMessage>
{
public MockSnifferSource()
{
Add(new SnifferMessage
{ Node = "One", Command = 1, Time = DateTime.Now, Payload = "12345", Metadata = "TTD=5" });
}
}
public struct SnifferMessage
{
public string Node;
public byte Command;
public DateTime Time;
public string Payload;
public string Metadata;
}
Kann jemand die Quelle des Problems identifizieren?
Erstens, verwenden Sie nicht "List", verwenden Sie "ObservableCollection". Aber das ist nicht dein Problem hier. Ihr Problem hier versucht wahrscheinlich, an Felder zu binden. Du kannst nicht. 'SnifferMessage' sollte Eigenschaften haben, keine Felder:' public string Node {get; einstellen; } usw. Zum Schluss sieht es so aus, als wäre Ihre Sammlung Ihr DataContext. Das ist keine gute Idee; Sie müssen es nur später beheben. Geben Sie Ihrem Viewmodel eine Collection-Eigenschaft und binden Sie diese an. –
Danke. Ich habe es herausgefunden, kurz bevor ich die Posts gesehen habe, Dummkopf. Ich brauchte eine Weile, um herauszufinden, was ein Viewmodel war, aber es war im Beispiel unten und es funktionierte. – Cormagh
Großartig. Du solltest seine Antwort akzeptieren. –