So anzeigen Sie in jedem ListBoxItem -Textblock mit Bindung an Filelds verschiedener Tabellen an

StackOverflow https://stackoverflow.com/questions/1816533

  •  08-07-2019
  •  | 
  •  

Frage

Grüße an alle und Entschuldigung für mein Englisch! Ich habe ein Listbox, It itemsSource = myclientsList.DefaultView. Die Elemente der Listbox verfügen über eine Vorlage (ControlTemplate), die in einer separaten Ressourcendatei definiert ist. Jedes Element enthält ein kleines Textblock, Text -Property von jedem hat eine Bindung an Felder meines Objekts MyclientList.

Ich muss eine dieser Elementvorlage in mehreren Texblocks hinzufügen, und jeder von ihnen muss eine Bindung an Felder eines anderen meiner Klasse MyordersList haben. - (Ich möchte also jede Zeile von Listbox -Informationen aus verschiedenen Tabellen meiner Datenbank anzeigen - dies ist eine Frage).

Problem in dieser Listbox -ElementSound -Aussource hat einen Link zu Object MyclientsList und ich kann meine OrderList nicht auf itemsource derselben Listbox einstellen. Daher muss ich einen Weg finden, um textblock zu spezifizieren.

PS Ich bin ein neuer in .NET und WPF und habe wahrscheinlich Fehler in meiner Erklärung - tut mir leid.

War es hilfreich?

Lösung

Es hört sich so an, als hätten Sie einen Datagrid -Display -Typ und möchten weitere Spalten hinzufügen, um die Bestellinformationen für einen bestimmten Client anzuzeigen. Wenn dies der Fall ist, müssen Sie ein paar Dinge tun. Zunächst müssen Sie ein zusammengesetztes Objekt erstellen, das Informationen für beide Entitäten in ein einzelnes Objekt speichert (so dass jede Zeile Ihres Steuerelements alle Daten enthält, die sie anzeigen müssen). Zweitens würde ich empfehlen, eine tatsächliche Datagrid -Steuerung zur Anzeige von Zeilen zu verwenden, anstatt ein ListBoxItem zu temporieren. Die Listansicht mit einem in das Framework eingebauten Gridview ist nicht großartig, daher würde ich das empfehlen WPFTOOLKIT'S DATAGRID für eine kostenlose Option.

Andere Tipps

Wenn ich hier zwei Probleme gibt, wenn ich die Frage verstanden habe: Wie erstellen Sie eine einzige Sammlung, die sowohl Kunden als auch Bestellungen enthält, und wie zeigen Sie Kunden und Bestellungen in derselben Listbox auf unterschiedliche Weise an?

In Bezug auf das erste können Sie dies mit einer Compositecollection tun.

In Bezug auf die zweite definieren Sie zwei DataTeMplates anstelle einer Steuerung. Verwenden Sie als Schlüssel für jede DataTemplate den Typ des Objekts

<DataTemplate x:Key="{x:Type local:Client}">

Verwenden Sie alternativ ElementeControl.ItemTemPlateSelector, um je nach Art des Elements explizit auf verschiedene DataTeMplates zu zeigen. OT Wenn Sie wirklich ControlTemplates verwenden müssen, schauen Sie sich itemsControl.ItemContainerSyLeSelector an.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top