c# - MVVMLight Combobox Binding Silverlight4 -
(mvvm light in sl4)
my displayworkorder view has field named warehouse_code. in viewmodel, bind property. if use textbox , set text="{binding warehouse_code}", open existing workorder, textbox populated value of warehouse_code (e.g. lombard). if change textbox combobox, have issues.
the combobox set so:
<combobox grid.column="1" grid.row="1" x:name="cbowarehouse" margin="4" itemssource="{binding path=warehouses}" selectedvalue="{binding path=warehouse_code, mode=twoway}" />
my warehouses property (for design mode) list build in constructor of viewmodel:
warehouses = new list<string> { "docks", "pearl", "lombard", "powell", "goose hollow" };
when load blank work order, combobox populated list. however, when select existing work order, combobox blank. not don't display selectedvalue work order, itemssource doesn't seem binding anymore.
as sidenote, when select existing workorder (via childwindow/messaging), overload constructor in view this:
public displayworkorder(model.bworkorder workorder) { initializecomponent(); this.datacontext = workorder; }
if set breakpoint in here, workorder.warehouse_code set propertly, i'm confused what's happening.
any ideas?
edit stephan's comment makes sense that, setting datacontext workorder, i'm losing context in combobox that's set viewmodel. want datacontext set to viewmodel though. this...
in listworkordersviewmodel, after user selects work order view, use relaycommand (implementing icommand interface) send message of type bworkorder, using token "woselected". pass object reference through message. in mainpage.xaml.cs (not proud of this, need messaging class handle stuff!), subscribe code block:
messenger.default.register<notificationmessage<model.bworkorder>>( this, nm => { if (nm.notification == "woselected") { rightcontent.content = new views.displayworkorder(nm.content); } });
so in case, i'm setting content property of frame instantiated displayworkorder, overloading constructor & passing in wo object.
to keep datacontext of displayworkorderview viewmodel (instead of setting workorder object), have property in displayworkorderviewmodel of type bworkorder, send message listworkorderviewmodel displayworkorderviewmodel, , set workorder object equal property (of type bworkorder), bind datacontext of displayworkorder property?
hope wasn't confusing :)
Comments
Post a Comment