i have wpf c# application. in window want start height when opens. want allow user able resize window. window has dockpanel lastchildfill set true. has on left tree pick section see it's details, in middle seperator , on right section's details (you need last child fill space left). code looks this:
<stackpanel> <dockpanel lastchildfill="true" background="#344755"> <textblock text="header" background="#344755" foreground="white"/> </dockpanel> <dockpanel lastchildfill="true" margin="5"> <telerik:radtreeview x:name="treev"> <telerik:radtreeview.items> <telerik:radtreeviewitem header="general" /> <telerik:radtreeviewitem header="general2" /> <telerik:radtreeviewitem header="general3" /> <telerik:radtreeviewitem header="general4" /> </telerik:radtreeview.items> </telerik:radtreeview> <separator/> <grid > <scrollviewer verticalscrollbarvisibility="auto"> <itemscontrol> <dockpanel lastchildfill="true" margin="5"> <grid > <textblock text="something"></textblock> <checkbox horizontalalignment="right"/> </grid> </dockpanel> // , many more dock panels </itemscontrol> </scrollviewer> </grid > </dockpanel> </stackpanel>
this problem: if don't give second dock panel height window automatically grows bigger , scroll never shows. if give height, scroll show if user resizes window dock panel doesn't resize , doesn't seperator.
any ideas?
you need rethink layout 1 thing don't need have dock panel fill available area
here quick description of common layouts
stackpanel creates list of items in top down or left right arrangement
grid attaches item grid define sized rows , columns (uniform grid same rows , colums set equally fill available space)
dockpanel attaches items edges using order added , dock property, default last item set fill middle
canvas position items @ fixed distances edges
so given controls w,x,y,z if want w on left z on right , x & y share centre
<dockpanel> <w dockpanel.dock="left" /> <z dockpanel.dock="right" /> <uniformgrid columns="2"> <x/> <y/> </uniformgrid> </dockpanel>
if wanted w cover first 1/4 of screen , x,y & z stacked vertically on remaining 3/4 , scrollable do
<grid> <grid.columndefintions> <columndefintion \> <columndefintion width="3*" \> <grid.columndefintions> <w/> <scrollviewer> <stackpanel> <x/> <x/> <x/> </stackpanel> </scrollviewer> </grid>
if have 1 item inside layout container container not required
a quick fiddle above code , simplfies to
<dockpanel background="#344755"> <textblock dockpanel.dock="top" text="header" foreground="white"/> <treeview x:name="treev"> <treeviewitem header="general" /> <treeviewitem header="general2" /> <treeviewitem header="general3" /> <treeviewitem header="general4" /> </treeview> <separator/> <scrollviewer verticalscrollbarvisibility="auto"> <itemscontrol> <itemscontrol.itemtemplate> <datatemplate> <checkbox horizontalalignment="right">something</checkbox> </datatemplate> </itemscontrol.itemtemplate> </itemscontrol> </scrollviewer> </dockpanel>
or if don't have collection bind items control to
<dockpanel background="#344755"> <textblock dockpanel.dock="top" text="header" foreground="white"/> <treeview x:name="treev"> <treeviewitem header="general" /> <treeviewitem header="general2" /> <treeviewitem header="general3" /> <treeviewitem header="general4" /> </treeview> <separator/> <scrollviewer verticalscrollbarvisibility="auto"> <stackpanel> <checkbox horizontalalignment="right">something</checkbox> <checkbox horizontalalignment="right">something</checkbox> <checkbox horizontalalignment="right">something</checkbox> <checkbox horizontalalignment="right">something</checkbox> <checkbox horizontalalignment="right">something</checkbox> ... </stackpanel> </scrollviewer> </dockpanel>
Comments
Post a Comment