Benutzer mit den meisten Antworten
WPF wie macht man eine "Nachrichtenliste"

Frage
-
Hallo Forum,
wie macht man eine "Nachrichtenliste" ? Damit meine ich im Prinzip das was diese Nachricht auch ist.
Ich suche eine Möglichkeit Nachrichten darzustellen die der Reihe nach aufgelistet werden. Die Nachricht kann unterschiedlich lang sein.
wie dieser Beitrag der fortlaufend durch neue "Nachrichten" in unterschiedlichen Längen ergänzt wird.
Kann mr da jemand helfen wie man das mit c# und WPF machen kann ?
Gruß Roland
Antworten
-
Hallo Roland,
du könntest doch einfach eine Liste in XAML erstellen, in der deine "Nachrichten" angezeigt werden.
Angenommen, du hast ein UserControl (eigenes Steuerelement) - nenne ich es mal "MessageEntryUI" - welches aus einer Nachricht den Titel und den Inhalt herausextrahiert und anzeigt, dann könntest du einfach eine Liste anlegen.
Das würde dann so aussehen:
-- XAML --
<!-- Weitere Informationen zur ListView: https://msdn.microsoft.com/de-de/library/system.windows.controls.listview%28v=vs.110%29.aspx --> <ListView x:Name="myMessageList"> </ListView>
-- c# (Code Behind) --
// // Diese Liste speichert alle eingekommenen Nachrichten ab // MessageEntryUI ist ein Stuerelement, welches die Nachricht anzeigen kann. // Zum Vereinfachen besitzt MessageEntryUI eine Funktion namens .LoadMessage(IMyMessageImplementation), welche die Nachricht vorbereitet und anzeigen kann. // Dazu sollte z.B. der Text aus der Nachricht in eine TextBox aus MessageEntryUI kopiert werden. // private List<MessageEntryUI> _entries = new List<MessageEntryUI>(); // // In diesem Beispiel gehe ich davon aus, dass "IMyMessageImplementation" deine Klasse ist, welche die Nachricht beschreibt und damit Titel+Text beinhaltet. // void AddNewMessage(IMyMessageImplementation mm) { // Das UI-Element erstellen MessageEntryUI uie = new MessageEntryUI(); // Nachricht anzeigen uie.LoadMessage(mm); // Neues Element ganz oben (erster Index) anfügen _entries.Insert(0, uie); // Die Liste aktualsieren (dazu die neue Liste komplett laden) // Man könnte auch diesen Vorgang, wenn es viele Nachrichten sind anderweitig optimieren, aber das ist eine andere Sache... // siehe XAML this.myMessageList.ItemsSource = uie; }
© 2015 Thomas Roskop
Germany // Deutschland
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 18. Mai 2015 14:00
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 26. Mai 2015 14:19
Alle Antworten
-
Hallo Roland,
du könntest doch einfach eine Liste in XAML erstellen, in der deine "Nachrichten" angezeigt werden.
Angenommen, du hast ein UserControl (eigenes Steuerelement) - nenne ich es mal "MessageEntryUI" - welches aus einer Nachricht den Titel und den Inhalt herausextrahiert und anzeigt, dann könntest du einfach eine Liste anlegen.
Das würde dann so aussehen:
-- XAML --
<!-- Weitere Informationen zur ListView: https://msdn.microsoft.com/de-de/library/system.windows.controls.listview%28v=vs.110%29.aspx --> <ListView x:Name="myMessageList"> </ListView>
-- c# (Code Behind) --
// // Diese Liste speichert alle eingekommenen Nachrichten ab // MessageEntryUI ist ein Stuerelement, welches die Nachricht anzeigen kann. // Zum Vereinfachen besitzt MessageEntryUI eine Funktion namens .LoadMessage(IMyMessageImplementation), welche die Nachricht vorbereitet und anzeigen kann. // Dazu sollte z.B. der Text aus der Nachricht in eine TextBox aus MessageEntryUI kopiert werden. // private List<MessageEntryUI> _entries = new List<MessageEntryUI>(); // // In diesem Beispiel gehe ich davon aus, dass "IMyMessageImplementation" deine Klasse ist, welche die Nachricht beschreibt und damit Titel+Text beinhaltet. // void AddNewMessage(IMyMessageImplementation mm) { // Das UI-Element erstellen MessageEntryUI uie = new MessageEntryUI(); // Nachricht anzeigen uie.LoadMessage(mm); // Neues Element ganz oben (erster Index) anfügen _entries.Insert(0, uie); // Die Liste aktualsieren (dazu die neue Liste komplett laden) // Man könnte auch diesen Vorgang, wenn es viele Nachrichten sind anderweitig optimieren, aber das ist eine andere Sache... // siehe XAML this.myMessageList.ItemsSource = uie; }
© 2015 Thomas Roskop
Germany // Deutschland
- Als Antwort vorgeschlagen Dimitar DenkovMicrosoft contingent staff, Administrator Montag, 18. Mai 2015 14:00
- Als Antwort markiert Aleksander Chalabashiev Dienstag, 26. Mai 2015 14:19
-
Hallo Thomas,
Danke für die Info.
Vielleicht hätte ich noch sagen sollen, das die Nachrichten in einer DB gespeichert sind und die User eigentlich nichts liefern. Die Nachrichten sind mehr wie ein Ticker auf einer Homepage. Was der User / Leser noch machen können soll ist ein lesevermerk setzten. Diesen würde ich dann auch in die DB zurückschreiben.
Gruß Roland
-
Hallo Roland,
das mit dem Lesevermerk kannst ud ja über einen einfachen Button uf dem UserControl (bei mir im Bsp: MessageEntryUI) realisieren.
Und die Art und Weise, die du zum aufrufen der Nacxhrichten verwendest, hat nichts mit meiner Idee zu tun.
Du kennst doch Outlook 2013, die Email-Leiste währe dann in etwa das, was ich mir dachte, als ich die Antwort vorgeschlagen habe.
© 2015 Thomas Roskop
Germany // Deutschland