none
Wie einer ComboBox am Ende der aufgeklappten Liste einen Button hinzufügen?

    Frage

  • Hallo,
    ich will einer ComboBox einen einzelnen Button hinzufügen.
    Dieser Button soll im Fuß der aufgeklappten ComboBox-Liste angezeigt werden; also nicht für jeden Eintrag einen Button, sondern am Ende der Liste.
    Der richtige Ort dafür ist wahrscheinlich das ControlTemplate?
    Aber wie füge ich einen Button hinzu und die eigenliche Liste bleibt erhalten?

    <ComboBox>
      <ComboBox.Template>
        <ControlTemplate>
        ?????
     </ControlTemplate>
      </ComboBox.Template>
    </ComboBox>

    Alexander

    Mittwoch, 23. Oktober 2013 15:00

Antworten

  • Hallo,
    ich denke mal, das du die Elemente der ComboBox aus einer Auflistung lädst und sie nicht einfach mittels Items.Add hinzufügst.

    Wie man ein ControlTemplate für eine ComboBox erstellt, kannst du hier erfahren. Wie du siehst, ist es recht komplex. Du musst das gesamte Design der ComboBox nachbilden.

    Alternativ kannst du es vielleicht so machen, das das letzte Element etwas anzeigt wie "<Durchsuchen...>", bei der Auswahl von diesem Eintrag führst du dann das aus, was der Button machen sollte. So macht es Visual Studio an einigen Stellen.

    Weiterhin wäre es möglich den Button mit in die Liste der Elemente aufzunehmen. Ob ich das machen würde, hängt aber auch vom Vorhaben ab.

    Nun habe ich noch eine ungetestete Idee, du leitest ein Control von StackPanel(oder einem anderen Container) ab und hängst hinten einen Button an die Liste an. Den Button-Click leitest du weiter.
    Diese Klasse kannst du nun als ItemsPanelTemplate verwenden. Das weitergeleitete Event fängst du dann ab und verarbeitest es.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.


    Mittwoch, 23. Oktober 2013 17:00
    Moderator

Alle Antworten

  • Hallo,
    ich denke mal, das du die Elemente der ComboBox aus einer Auflistung lädst und sie nicht einfach mittels Items.Add hinzufügst.

    Wie man ein ControlTemplate für eine ComboBox erstellt, kannst du hier erfahren. Wie du siehst, ist es recht komplex. Du musst das gesamte Design der ComboBox nachbilden.

    Alternativ kannst du es vielleicht so machen, das das letzte Element etwas anzeigt wie "<Durchsuchen...>", bei der Auswahl von diesem Eintrag führst du dann das aus, was der Button machen sollte. So macht es Visual Studio an einigen Stellen.

    Weiterhin wäre es möglich den Button mit in die Liste der Elemente aufzunehmen. Ob ich das machen würde, hängt aber auch vom Vorhaben ab.

    Nun habe ich noch eine ungetestete Idee, du leitest ein Control von StackPanel(oder einem anderen Container) ab und hängst hinten einen Button an die Liste an. Den Button-Click leitest du weiter.
    Diese Klasse kannst du nun als ItemsPanelTemplate verwenden. Das weitergeleitete Event fängst du dann ab und verarbeitest es.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.


    Mittwoch, 23. Oktober 2013 17:00
    Moderator
  • Hallo Koopakiller,

    danke für Deine Hilfe. Leider funktioniert der Link (...kannst du hier erfahren...) nicht. Die Seite wird nicht gefunden. Schicke bitte nochmals den Link. Danke.

    Alexander 

    Mittwoch, 23. Oktober 2013 19:25
  • http://msdn.microsoft.com/en-us/library/dd334408.aspx

    PS: Ich habe den Link auch in meinem 1. Post korrigiert.

    PPS: Durch einen Rechtsklick auf die ComboBox und auswahl von Vorlage bearbeiten > Kopie bearbeiten kannst du dir den Standartstil generieren lassen.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.


    Mittwoch, 23. Oktober 2013 19:27
    Moderator