2 Stimmen

Gibt es ein Silverlight-Äquivalent von ITypedList?

Ich habe eine Sammlung von Objekten, von denen jedes einen Satz von Name-Wert-Paaren enthält. Die Namen sind für alle Objekte identisch. Ich möchte diese als Spalten in einem Datengitter anzeigen.

In Winforms/WPF würde ich verwenden ITypedList mit einigen PropertyDescriptor Instanzen, um der Laufzeitumgebung einige gefälschte Eigenschaften zur Verfügung zu stellen. Dieser Typ scheint jedoch in Silverlight nicht verfügbar zu sein.

Gibt es also eine Alternative, oder gibt es das in Silverlight nicht?

エディテージ Hinzufügen von Code, um das Szenario besser zu gestalten

public class Cell {
    public string Name { get; private set; }
    public string Value { get; private set; }
}

public class Row {
    public IEnumerable<Cell> Cells { get; private set; }
}

public class ViewModel {
    public IEnumerable<Row> Rows { get; private set; }
}

<sdk:DataGrid ItemsSource="{Binding Rows}" />

Wie kann ich die Zeilen-/Zellensuche zum Funktionieren bringen und die DataGrid ? Insbesondere möchte ich das Gitter über Bindung zu aktualisieren, sobald die Rows Eigenschaftsänderungen (angenommen, es wird ein Änderungsereignis ausgelöst, auf das die Bindung reagiert).

1voto

Drew Noakes Punkte 282438

Am Ende konnte ich dieses Problem durch die Verwendung von Bindungen und einem String-Indexer lösen.

public class Row {
    public RowData Data { get; private set; }
}

public class RowData {
    public string this[string name] {
        get { return ...; }
    }
}

Erstellen Sie dann die Gitterspalten manuell:

foreach (var column in Columns)
{
    _grid.Columns.Add(new DataGridTextColumn
    {
        Binding = new Binding(string.Format("Data[{0}]", column.Name)),
        Header = column.Name,
        IsReadOnly = true
    });
}

Dies bedeutete, dass die Daten automatisch aktualisiert wurden, da in meinem Fall die gesamte Data Eigenschaft ersetzt wurde, und INotifyPropertyChanged implementiert, um die Bindung zu benachrichtigen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X