Laden...

Suche ein Controll ähnlich des Toolbox-Controls

Erstellt von ChrisProg vor 7 Jahren Letzter Beitrag vor 7 Jahren 2.081 Views
ChrisProg Themenstarter:in
174 Beiträge seit 2009
vor 7 Jahren
Suche ein Controll ähnlich des Toolbox-Controls

Hallo zusammen,

irgendwie stehe ich gerade wohl auf der Leitung ...

Ich suche ein Control, welches im Prinzip so aufgebaut ist, wie das Toolbox-Control im Designer.

Ich muß Kunden (also die Gruppen) und deren dazugehörigen Artikel (also Elemente) dynamisch anzeigen können, zudem muß es auch noch Drag&Drop-fähig sein.

Dafür scheint mir ein solches Control ideal, zumal es ja auch noch eine Scrollbar enthält...

Ich weiss, das ich das auch mit einem ToolStrip und DropDown-Buttons machen könnte, das ist aber schon rein optisch nicht so schön ...

MfG Christian

1.029 Beiträge seit 2010
vor 7 Jahren

Hi,

was spricht denn gegen eine ListView?

LG

W
195 Beiträge seit 2008
vor 7 Jahren

Wenn es auch was kosten darf, schau Dir mal www.devexpress.com oder www.devcomponents.com an. Das gibt es solche (und noch viele weitere Controls). Ansonsten such mal nach 'Outlookbar' oder 'Navbar'...

ChrisProg Themenstarter:in
174 Beiträge seit 2009
vor 7 Jahren

Hallo,

@Taipi88:
von Grundsatz her, erst einmal nichts.

Nur die Optik ist halt nicht so toll 🙁

Im Moment habe ich ObjectListView gefunden, das sieht doch deutlich ansprechender aus.

Was mir aber bei beiden Lösungen gar nicht gefällt, ist das man immer Columnheader hat, also kommt das ListView wohl so nicht in Frage X(

Ich werde es dann wohl mit einem Treeview versuchen.

wenn man das mit


[System.Runtime.InteropServices.DllImport("uxtheme.dll", ExactSpelling = true, CharSet = System.Runtime.InteropServices.CharSet.Unicode)]
private static extern int SetWindowTheme(IntPtr hwnd, string pszSubAppName, string pszSubIdList);

public static void SetTreeViewTheme(IntPtr treeHandle)
{
     SetWindowTheme(treeHandle, "explorer", null);
 }

und im Form.Load() mit


SetTreeViewTheme(treeView1.Handle);

versieht, sieht das auch schon ganz ansprechend aus ...

Wäre halt nur schön gewesen wenn es das so von MS auch für alle geben würde ...

MfG Christian

D
985 Beiträge seit 2014
vor 7 Jahren

Warum gleich ein TreeView?

Mit einer ItemsCollection die jedes Item mit einem Expander (zeigt den Kunden) und einer eingebetteten ListBox/ListView (zeigt die Artikel) ist das doch exakt was du haben möchtest.

In dem KundenViewModel verknüpft man den IsExpanded State und kann so die Artikel auch aus dem Speicher werfen, wenn nicht expanded und wieder holen, wenn expanded.

Im enthaltenen ViewModel kann man dann auch noch festlegen, dass nur ein Kunde expanded sein darf und schon hat man auch die Datenflut im Griff.

ChrisProg Themenstarter:in
174 Beiträge seit 2009
vor 7 Jahren

weil ich beim Treeview

  • nicht erst das expandieren / verbergen, und den Knotenpunkt programmieren muss
  • auch optisch der Treeview besser aussieht (zumindest bei meinen Tests...)

Weiterhin weiß ich im Moment auch gar nicht, ob mit deinem Vorschlag (eingebettete ListBox/ListView) so einfach Drag&Drop möglich wäre (habe ich noch nie gemacht ...) ?

Hättest Du ein Besipiel / Bild von deinem Vorschlag ?

P.S.:In dem Bild ist der Kunde die Gruppe und der Artikel das Item ...

MfG Christian

D
985 Beiträge seit 2014
vor 7 Jahren

Du sollst auch ein ListControl in einen Expander packen, der das Expanden schon von Haus aus kann und darum auch Expander heißt.

Diese Kombi pro Kunde in einem ItemsControl und gut.

Drag'Drop geht dann über das ListControl in dem jeweiligen Kunden-Expander

Beispiel ohne Binding (nur zur Demonstration - das per Binding ist aber problemlos möglich)


            <ItemsControl>
                <Expander Header="Kunde 1" IsExpanded="True">
                    <ListBox>
                        <ListBoxItem Content="Artikel 1"/>
                        <ListBoxItem Content="Artikel 2"/>
                        <ListBoxItem Content="Artikel 3"/>
                        <ListBoxItem Content="Artikel 4"/>
                        <ListBoxItem Content="Artikel 5"/>
                    </ListBox>
                </Expander>
                <Expander Header="Kunde 2" IsExpanded="True">
                    <ListBox>
                        <ListBoxItem Content="Artikel 2"/>
                        <ListBoxItem Content="Artikel 3"/>
                        <ListBoxItem Content="Artikel 1"/>
                    </ListBox>
                </Expander>
                <Expander Header="Kunde 3">
                    <ListBox>
                        <ListBoxItem Content="Artikel 1"/>
                        <ListBoxItem Content="Artikel 4"/>
                        <ListBoxItem Content="Artikel 5"/>
                        <ListBoxItem Content="Artikel 8"/>
                        <ListBoxItem Content="Artikel 9"/>
                    </ListBox>
                </Expander>
            </ItemsControl>

ChrisProg Themenstarter:in
174 Beiträge seit 2009
vor 7 Jahren

OK, Du sprichst von WPF ...

Ich arbeite mit Windows Form u. da scheint es das nicht zu geben...

Ich glaube ich muss mich doch mal bei Zeiten in WPF einlesen, obwohl ich eigentlich mit xml so ein bisschen auf Kriegsfuss stehe 😜

Bestehende Projekte kann man nicht so einfach umsetzen, oder ?

Danke für den Input 👍

D
985 Beiträge seit 2014
vor 7 Jahren

Ok, du sprichst von Windows.Forms (steht für die Dummen ja auch oben drüber - für mich zu klein oder ... 😄)

Das mit dem XAML ist doch halb so wild weil komplett mit IntelliSense. Ein Blick lohnt da auf jeden Fall.