Sto scrivendo un controllo utente WPF per la mia applicazione, inserendo un ListBox e alcuni altri elementi.Come implementare DisplayMemberPath per il mio UserControl Wpf?
Il ListBox ha un nuovo ItemTemplate che presenta quattro informazioni per ciascun elemento nel mio elenco. Riesco a scrivere a chiave ciascuno dei quattro collegamenti su proprietà specifiche delle mie voci di elenco e vengono visualizzati correttamente.
Tuttavia, voglio che il mio UserControl sia un po 'più flessibile.
Su ListBox e ComboBox c'è una struttura DisplayMemberPath (ereditato da ItemsControl) che sembra "iniettare" la proprietà appropriata vincolante in ItemTemplate standard.
Come ottengo lo stesso risultato con il controllo utente?
mi piacerebbe istituire quattro nuove proprietà per consentire la configurazione delle informazioni visualizzate:
public string LabelDisplayPath { get; set; }
public string MetricDisplayPath { get; set; }
public string TitleDisplayPath { get; set; }
public string SubtitleDisplayPath { get; set; }
Revisione ItemsControl.DisplayMemberPath con riflettore sembra andare nella tana del coniglio, non sono stato in grado capire come funziona
Inoltre, se sono completamente fuori rotta - e c'è un'altra, più tecnica "WPF" che dovrei usare, per favore, indicarmi in quella direzione.
Aggiornamento
Ecco un chiarimento di quello che sto cercando di realizzare.
Il ListBox all'interno del mio controllo display utente quattro informazioni per articolo: Etichetta, titolo, sottotitolo e metriche
In un unico luogo, voglio usare questo controllo utente per visualizzare un elenco dei problemi. Ogni numero è simile al seguente:
public class Issue {
public string Code { get; set; }
public string Description { get; set; }
public string Priority { get; set; }
public string Reporter { get; set; }
}
Quando si visualizzano le questioni, voglio usare le seguenti mappature:
Code --> Label
Description --> Title
Reporter --> Subtitle
Priority --> Metric
Altrove nella stessa applicazione, ho una lista di messaggi che voglio visualizzare utilizzando lo stesso UserControl. Ogni post è simile al seguente:
public class Post {
public DateTime PostedOn { get; set; }
public string Title { get; set; }
public string Teaser { get; set; }
public int CommentCount { get; set; }
}
Quando si visualizzano i messaggi, voglio usare le seguenti mappature:
PostedOn --> Label
Title --> Title
Teaser --> Subtitle
CommentCount --> Metric
Considerato che gli aspetti ei messaggi sono piuttosto differenti astrazioni, non voglio che per costringerli avere le stesse proprietà, solo per consentire l'utilizzo di UserControl invariato. Invece, voglio introdurre una piccola configurabilità in modo da poter riutilizzare il mio UserControl in entrambi i siti in modo pulito.
Non capisco cosa stai cercando di fare. Con "hardcoding" i tuoi binding, stai ancora ottenendo flessibilità dal semplice fatto che stai usando il databinding, giusto? Voglio dire, potresti legare a qualsiasi DependencyProperty e cambiare quel valore nel code-behind. Puoi pubblicare un campione dello XAML che stai utilizzando e mettere in risalto ciò di cui non sei soddisfatto? – Dave