Laden...

[gelöst] Zwei Fragen zur Listview (Größe und Mouseevents)

Erstellt von larc0s vor 15 Jahren Letzter Beitrag vor 15 Jahren 3.562 Views
L
larc0s Themenstarter:in
78 Beiträge seit 2008
vor 15 Jahren
[gelöst] Zwei Fragen zur Listview (Größe und Mouseevents)

Hallo an alle,

ich habe hier zwei kleine Problemchen mit der Listview in WPF.
Die erste Frage sollte für kenner wohl keine Schwierigkeit darstellen 😃

Situation wie im Bild. Habe ein Fenster das vergrößerbar ist und darin eine Listview. Die Größen sind auf "Auto" gestellt und Min.Größe auf "300px".

Wenn die Listview nun gefüllt wird, vergrößert sich automatisch das ganze Fenster. Jedoch würde ich es gerne haben, dass die Listview eine standard Größe hat und nur durch den Benutzer vergrößert werden kann. Wenn ich die Listview aber auf eine feste größe stelle, so vergrößert sie sich nicht mehr mit dem Fenster mit. Muss ich dazu die Listview in eine Zeile in einer Gridview packen und die unteren Buttons in eine zweite Zeile? Und wenn ja, wie müsste ich das ganze einstellen? Hoffe ihr könnt mir helfen 😃

Erledigt
Nun zur zweiten Frage:
Im Listview ist durch das Event "PreviewLeftMouseButtonDown" DragDrop möglich. Außerdem ist das Event "MouseDoubleClick" belegt. Das Problem, dass das Doppelklicken nicht ausgelöst wurde hatte ich hier schonmal gepostet und auch gelöst bekommen. (Mit der Eigenschaft e.Handled)
Jedoch habe ich nun das Prblem, dass es GARNICHT mehr zum DoubleMouseClick Event geht. Wenn ich jedoch eine Haltemarke im PreviewLeftMouseButtonDown setze, dass Programm dort stoppt und ich dann auf "weiter" kicke, wird das Doppelklicken behandelt!? Kann isch das einer erklären? Hoffe auch, dass es rübergekommen ist was ich meine 😃

Danke schonmal für eure Hilfe!

Gruß,
larc0s

L
larc0s Themenstarter:in
78 Beiträge seit 2008
vor 15 Jahren

Ok, die zweite Frage habe ich nun selber erledigt bekommen 😃 War einfach nur ein kleiner Denkfehler in meiner Logik.

Aber zur ersten Frage habe ich noch keine Lösung, sollte ich eine bekommen bevor mir hier jemand hilft, so werde ich diese natürlich auch posten.

Gruß,
larc0s

L
862 Beiträge seit 2006
vor 15 Jahren

Wie hast du denn dein Layout zur Zeit aufgebaut?

Ich würde als LayourRoot ein Grid nehmen. Und dieses in Zeilen und Spalten aufteilen. Für die Buttons kannst du fixe größen eintragen und die Zeile/Spalte, welche die ListView enthält setzt du mit Height/Width = * auf AutoSize. Der Listview übergiebst du einfach gar keine Höhe&Breite somit passt sich sich an das Parentelement an.

T
109 Beiträge seit 2008
vor 15 Jahren

Ich kenn mich mit wpf nicht wirklich aus, aber kann man nciht einfach anchor auf oben,unten,links,rechts stellen? dann ändert das sich beim forms mit.
mit minsize kann man dann die minimale größe bestimmen!

Torley

L
862 Beiträge seit 2006
vor 15 Jahren

Ich kenn mich mit wpf nicht wirklich aus, aber kann man nciht einfach anchor auf oben,unten,links,rechts stellen? dann ändert das sich beim forms mit.
mit minsize kann man dann die minimale größe bestimmen!

Torley

Anchor nennst sich in WPF HorizontalAlignment und VerticalAlignment und ist ohne explizite Angabe automatisch auf Stretch gesteltt und passt sich damit dem Parentelement an.

L
larc0s Themenstarter:in
78 Beiträge seit 2008
vor 15 Jahren

Wie hast du denn dein Layout zur Zeit aufgebaut?

Ich würde als LayourRoot ein Grid nehmen. Und dieses in Zeilen und Spalten aufteilen. Für die Buttons kannst du fixe größen eintragen und die Zeile/Spalte, welche die ListView enthält setzt du mit Height/Width = * auf AutoSize. Der Listview übergiebst du einfach gar keine Höhe&Breite somit passt sich sich an das Parentelement an.

Ja so hatte ich mir das auch gedacht, aber wenn ich die Zeile, die die Listview beinhaltet auf Auto steht und die Listview keine Größe bekommt, passt sich dann die Zeile der Listview nicht an die Anzahl der Elemente in der Listview an?

Ich würde halt gerne der Listview eine vordefinierte Größe geben, die auch bei vielen Elementen beibehalten wird. Das vergrüßern soll nur durch den User möglich sein.

Bei deinem Vorschlag hört sich es so an, als hätte die Listview keine vordefinierte Größe, die diese beim hinzufügen von Elementen beibehält.

Kann mich auch irren 😃
Werde es mal probieren.

Gruß,
larc0s

L
larc0s Themenstarter:in
78 Beiträge seit 2008
vor 15 Jahren

Ich würde als LayourRoot ein Grid nehmen. Und dieses in Zeilen und Spalten aufteilen. Für die Buttons kannst du fixe größen eintragen und die Zeile/Spalte, welche die ListView enthält setzt du mit Height/Width = * auf AutoSize. Der Listview übergiebst du einfach gar keine Höhe&Breite somit passt sich sich an das Parentelement an.

Ist aufjedenfall ein Fortschritt, aber es ist leider immernoch so, dass wenn ich die Listview das erstemal aufrufe, dass die größe sich an die Anzahl der Elemente in ihr anpasst. Ich würde gerne eine Art Anfangsgröße vergeben...weiß jemand wie man das nun machen kann? 😃

L
862 Beiträge seit 2006
vor 15 Jahren

Also wenn ich alles richtig verstanden habe passt sich die Liste dem Grid an.
Aber die einzelnen ListColumns passen sich nicht an die Breite der Liste an.

Versuch mal sowas:


<ListView.View>
  <GridView>
    <GridViewColumn Width="20"/>
    <GridViewColumn Header="..." Width="100"/>
    <GridViewColumn Header="..." Width="80"/>
    <GridViewColumn Header="..." Width="80"/>
  </GridView>
 </ListView.View>

Damit solltest du eine Standardgröße der Spalten vergeben können.

L
larc0s Themenstarter:in
78 Beiträge seit 2008
vor 15 Jahren

Tut mir leid, ich habe mich falsch ausgedrückt.

Mein Problem ist die höhe des gesamten Fensters. Ich würde es gerne haben, dass das Fenster z.b. eine Anfangsgröße von 300px hat. Momentan ist es so, dass wenn das Fenster geöffnet wird sich die gesamte Höhe an der Anzahl der Elemente in der Listview orientiert, da diese ja auf "Auto" gestellt ist.

Gibt es nicht eine Eigenschft in der Art "Anfangsgröße" so, dass die tatsächlich mögliche Größe nicht beeinflusst wird, aber das Fenster mit einer bestimmten Höhe gestartet wird.
Das muss es doch geben...

Kann es sein, dass ich da etwas ganz simples übersehe?

L
larc0s Themenstarter:in
78 Beiträge seit 2008
vor 15 Jahren

So, habs jetzt selber rausgefunden.

Musste dafür dem Fenster eine Größe geben und "SiteToContent" aus, bzw. nur für die breite einstellen. Damit blieb das Fenster auf der Größe, bis der Benutzer dies vergrößert.

Danke für eure Hilfe.

Gruß,
larc0s