2009-06-02 9 views
1

Ziel Entwickeln Sie ein benutzerdefiniertes Steuerelement, das zusammenfassende Daten für eine bestimmte Woche anzeigt.WPF Databinding basierend auf Bedingungen

Die übergebenen Daten in wäre wie folgt:

3rd May 2009  Customer A  $2000 
4th May 2009  Customer A  $3900 
6th May 2009  Customer B  $1900 

Die erwartete Anzeige

3rd May  4th May  5th May  6th May 
    Customer A Customer A     Customer B 
    $2000  $1900       $1900 

Wie Sie bedingt die Daten basierend auf dem Datum zu sehen sein würde.

Können Artikel basierend auf einer Bedingung in WPF datengebunden werden?

heißt Zusammenfassung zeigen, wenn Datenquelle Datum == aktuelle Artikel

Datum oder soll ich nur Stick hinter in C diese Logik zu Codierung #?

----------------- Edit für Andys Fragen --------------------

I kann es eine Schnittstelle, aber keine Basisklasse implementieren.

Was ich tun möchte, ist die Kontrolle zeigen 1 Woche von einem Jahr im Wert von Daten wird dies über eine Eigenschaft namens aktuelle Woche festgelegt werden.

Wenn dann die bekannte Datenquelle (siehe Beispieltabelle oben) übergeben wird, möchte ich jeden Tag Elemente in der Steuerung, um ihre Daten aus der Datenquelle ziehen, wenn es welche gibt, und wenn nicht dann immer noch anzeigen, aber nur anzeigen Datum.

Die Daten würden eine Liste von Netz Zusammenfassung seiner

Objekte
public class GridSummary 
{ 
    public DateTime SummaryDate; 
    public Client Customer; 
    public decimal Amount; 
} 
+0

Entschuldigung, ich hätte klarer sein sollen, ich möchte, dass die Entwickler in der Lage sind, jede Datenquelle in meine Kontrolle zu werfen, und meine Kontrolle wählt einfach die Daten für die angegebenen Tage aus. – Peter

+0

Das Datenformat sollte oben tabellarisch sein, aber es hat nicht funktioniert, sorry, ich bin neu. So zeigt jeder Artikel das Datum, der Kunde darunter, und dann der Betrag darunter. – Peter

Antwort

1

Wenn ich Sie richtig verstehe, möchten Sie einige tabellarische Daten in einem Listenformat anzeigen. Ist das richtig?

Was wissen Sie über die Dateneingabe? Ist es garantiert, eine Schnittstelle zu implementieren oder von einer Basisklasse zu erben? Wenn das später ist, dann denke ich, dass Datenvorlagen der Weg zu gehen sind - erstellen Sie eine Datenvorlage für jeden möglichen Typ, den Sie erwarten, und für jeden Satz der TargetType zu dem Typ, den es angezeigt werden soll. Wenn Sie die Daten an das Steuerelement binden, wählt WPF automatisch die richtige Datenvorlage für jedes Objekt in der Auflistung aus.

Wenn Sie nichts über die eingehenden Daten wissen können, wie können Sie möglicherweise wissen, was angezeigt wird oder wie es angezeigt wird? Es scheint so, als ob es zumindest einige Dinge geben sollte, die über die eingehenden Daten bekannt sein müssen.

(Es ist möglich, dass ich nicht verstehe, was Sie zu tun versuchen - bitte klären Sie, und ich werde sehen, ob ich mehr helfen kann.

)

aktualisieren

Es klingt wie die Datenquelle für Ihre Steuerung wird eine Liste von GridSummary Objekte sein. Wenn dies der Fall ist, dann denke ich, dass Sie stattdessen eine CollectionViewSource als Datenquelle verwenden können (die im Grunde Ihre Sammlung von GridSummary Objekte umschließt) und abonnieren Sie sein Filter Ereignis. Vergleichen Sie für jedes übergebene Objekt das Datum mit der Woche der CurrentWeek-Eigenschaft. Wenn das Datum in dieser Woche liegt, akzeptieren Sie es (die verknüpfte MSDN-Seite enthält ein Beispiel dafür).

+0

Sehen Sie die Bearbeitung, die ich oben gemacht habe und danke für Ihre Zeit. – Peter

+0

Ich hatte das vorher gefunden, war mir aber nicht sicher. Ich verstehe, was Sie sagen, und ich werde ein wenig zusätzlichen Code tun müssen, da jeder Tag eine zusätzliche Ebene der Filterung über die Woche Filter benötigen würde, aber ich verstehe das Prinzip, das Sie erklären. Danke für die Hilfe! – Peter

0

Sie dies tun können:

if(a) 
    this.DataSource = a; 
else 
    this.DataSource = b; 

Ich bin nicht sicher, dass ist das, was Sie aber gemeint.

Machst du dein eigenes Rendering? Oder bauen Sie Ihre Steuerung von den Basissteuerelementen ab? Sie können möglicherweise verschachtelte Steuerelemente verwenden, um das zu erhalten, was Sie möchten, und Sie können die verschachtelten Steuerelemente bedingt steuern.

+0

Dies ist in WPF so im Wesentlichen wird es eine Form der Listensteuerung mit einer Kopf- und Fußzeile sein. – Peter