Lave en listbox som panelcontroller

Tags:    wpf c#

Har for ikke så længe siden begyndt at bruge wpf i stedet for windows forms.

Prøver desperat på at få lavet en "panel-kontroller" eller noget der til svare i wpf.

http://i43.tinypic.com/2laeded.png

Hvor hvert list-item er bundet til en panel. Hvordan gør man noget lignende i wpf... Har søgt nettet tyndt og jeg kan ikke forstå der ikke er de første 100 tutorials omkring dette.

Er det fordi man opnår samme kontroller gennem noget andet ?



5 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
Har for ikke så længe siden begyndt at bruge wpf i stedet for windows forms.

Prøver desperat på at få lavet en "panel-kontroller" eller noget der til svare i wpf.

http://i43.tinypic.com/2laeded.png

Hvor hvert list-item er bundet til en panel. Hvordan gør man noget lignende i wpf... Har søgt nettet tyndt og jeg kan ikke forstå der ikke er de første 100 tutorials omkring dette.

Er det fordi man opnår samme kontroller gennem noget andet ?


Du skal bruge data binding og MVVM pattern. Så sætter du en listbox eller lignende i venstre side, i højreside sætter du så en ContentPresenter i din højre side eventuelt med en tom DataContext.

Nu skal du have lavet dine views og viewmodeller etc. Når det er på plads kan du lave en DataTemplate i din XAML som beskriver at når din datacontext er en given viewmodel, skal den bruge et bestemt view.

Fold kodeboks ind/udKode 


Det betyder så at når du så klikker på dit listbox item i venstre side, så skifter du blit datacontexten til en anden viewmodel og vupti, så opdaterer din ContentPresenter (højre side) sig

Se evt. denne her artikel for mere: http://www.japf.fr/2009/03/thinking-with-mvvm-data-templates-contentcontrol/




Indlæg senest redigeret d. 18.04.2012 08:34 af Bruger #2730
Skal lige forstå det her korrekt.
er det du vil opnå at man klikker på et item i listbox'en så sætter den noget andet data ind i de controls som er til højre.
eller er det den "loader" nogle andre controls til høje ?



Du kan evt gøre det ved, at lave en custom klasse, der har et grid og det der skal vises i listboksen.

Så putter du en collection (Array eller List) ind i Listboxen, og viser titlen ved at sætte propert DisplayMemberPath="Title", hvor "Title" er navnet på den property der skal vises.

Derefter kan du enten lave en eventhandler, der erstatter det grid (eller panel) ud fra det valgte item, eller du kan måske lave en databinding som erstatter elementerne. Er ikke sikker på at sidstnævnte er mulig og har ikke Visual Studio installeret, så kan ikke teste.

En anden mulighed er dog at lave en TabControl, hvilket vil være mere logisk at bruge efter min mening.



Skal lige forstå det her korrekt.
er det du vil opnå at man klikker på et item i listbox'en så sætter den noget andet data ind i de controls som er til højre.
eller er det den "loader" nogle andre controls til høje ?


Det sidste.

I forms havde jeg bundet hver item i listbox til et panel, hvor hvert panel havde sit eget sæt controls på.

Det er det jeg håber på at genskabe her.

Du kan evt gøre det ved, at lave en custom klasse, der har et grid og det der skal vises i listboksen.

Så putter du en collection (Array eller List) ind i Listboxen, og viser titlen ved at sætte propert DisplayMemberPath="Title", hvor "Title" er navnet på den property der skal vises.

Derefter kan du enten lave en eventhandler, der erstatter det grid (eller panel) ud fra det valgte item, eller du kan måske lave en databinding som erstatter elementerne. Er ikke sikker på at sidstnævnte er mulig og har ikke Visual Studio installeret, så kan ikke teste.

En anden mulighed er dog at lave en TabControl, hvilket vil være mere logisk at bruge efter min mening.


Problemet er at en tabcontrol ikke passer ind i mit design, hvorfor jeg prøver at lave det samme men enten en listbox eller en række knapper.

Prøver at se om jeg kan lave det du siger. Du har vel ikke et link til noget der ligner ?



Indlæg senest redigeret d. 18.04.2012 00:24 af Bruger #17108
Ikke umiddelbart nej..

En TabControl kan godt have tabs til venstre som du har der... eneste problem er (måske) de små billeder, men det tror du kan klare ved at lave en custom TabItem ... Du kan i øvrigt ændre udseendet på fanerne så de slet ikke ligner faner...

En anden fordel er også, at du kan designe dine tabs i gui, i stedet for at skulle skrive dem, eller oprette en masse usercontrols.



t