Ich schreibe ein WPF-Benutzersteuerelement für meine Anwendung, umschließt eine ListBox und einige andere Elemente.Wie implementiert DisplayMemberPath für meine Wpf UserControl?
Die ListBox hat eine neue ItemTemplate, die vier Informationen für jeden Eintrag in meiner Liste enthält. Ich kann jede der vier Bindungen mit bestimmten Eigenschaften auf meinen Listenelementen fest codieren und sie werden gut angezeigt.
Allerdings möchte ich meine UserControl ein bisschen flexibler sein.
Auf ListBox und ComboBox gibt es eine Eigenschaft DisplayMemberPath (von ItemsControl geerbt), die die entsprechende Eigenschaft Bindung in das Standard ItemTemplate zu "injizieren" scheint.
Wie erreiche ich das gleiche Ergebnis mit meiner Benutzerkontrolle?
Ich möchte vier neue Eigenschaften einrichten Konfiguration der angezeigten Informationen zu ermöglichen:
public string LabelDisplayPath { get; set; }
public string MetricDisplayPath { get; set; }
public string TitleDisplayPath { get; set; }
public string SubtitleDisplayPath { get; set; }
Überprüfung ItemsControl.DisplayMemberPath mit Reflektor scheint das Kaninchenloch zu gehen, habe ich nicht in der Lage gewesen, zu ergründen, wie es funktioniert.
Auch, wenn ich völlig vom Kurs ab bin - und es gibt eine andere, mehr "WPF" Technik, die ich stattdessen verwenden sollte, bitte zeigen Sie mich in diese Richtung.
aktualisieren
Hier ist eine Klarstellung, was ich zu erreichen bin versucht.
Die List-Box in meiner Benutzersteuerung zeigt vier Informationen pro Artikel: Label, Titel, Untertitel und Metric
In einem Ort, möchte ich diese Benutzerverwaltung verwenden, um eine Liste von Themen angezeigt werden soll. Jede Ausgabe sieht wie folgt aus:
public class Issue {
public string Code { get; set; }
public string Description { get; set; }
public string Priority { get; set; }
public string Reporter { get; set; }
}
Wenn Probleme anzeigt, möchte ich folgende Zuordnungen verwenden:
Code --> Label
Description --> Title
Reporter --> Subtitle
Priority --> Metric
An anderer Stelle in der gleichen Anwendung, habe ich eine Liste der Beiträge, die ich will mit angezeigt werden das gleiche UserControl. Jeder Beitrag sieht wie folgt aus:
public class Post {
public DateTime PostedOn { get; set; }
public string Title { get; set; }
public string Teaser { get; set; }
public int CommentCount { get; set; }
}
Wenn Beiträge anzuzeigen, möchte ich folgende Zuordnungen verwenden:
PostedOn --> Label
Title --> Title
Teaser --> Subtitle
CommentCount --> Metric
Da Probleme und Beiträge sind ganz andere Abstraktionen, ich will nicht, sie zu zwingen, die gleichen Eigenschaften zu haben, nur um das UserControl unverändert zu lassen. Stattdessen möchte ich ein wenig Konfigurierbarkeit einführen, damit ich mein UserControl in beiden Seiten sauber wiederverwenden kann.
Ich verstehe nicht ganz, was Sie versuchen zu tun. Durch "Hardcoding" Ihrer Bindungen erhalten Sie immer noch Flexibilität durch die Tatsache, dass Sie Databinding verwenden, richtig? Ich meine, Sie könnten an jede DependencyProperty binden und diesen Wert im Code-Behind ändern. Kannst du ein Beispiel für das von dir verwendete XAML posten und hervorheben, worüber du unglücklich bist? – Dave