wpf - How to bind to a child branch or leaf of a treeview (in MVVM style)? -
i'm newbie treeviews. in wpf style, have treeview organized in 3 levels:
reportname1 networkname1 printername1 printername2 networkname2 printername3 printername4 reportname2 .... in xaml, using interaction behaviors bind treeview selecteditem viewmodel:
<treeview itemssource="{binding reporttree}" > <i:interaction.behaviors> <tvb:treeviewbehavior selecteditem="{binding selectedtreeitem, mode=twoway}" /> </i:interaction.behaviors> at point, works send item reporttree when select item under main study name. is, if select printername2, selectedtreeitem main viewmodel reportname1.
what need know is, how can tell printername2 selected opposed printername1?
my eventual goal allow selection of leaf or branch in tree , remove selected leaf or branch.
is there way this?
thanks help on this.
here 1 alternative solve using simple datatemplate treeview contains mousebinding phone call select command on parent viewmodel , pass clicked item commandparameter.
if viewmodel looks this:
public class mainviewmodel { public observablecollection<itemviewmodel> items { get; private set; } public itemviewmodel selecteditem { get; set; } public icommand selectitem { get; private set; } public mainviewmodel() { selectitem = new lazycommand<itemviewmodel>(executeselect); items = new observablecollection<itemviewmodel>(); } private void executeselect(itemviewmodel item) { selecteditem = item; } } with straightforward viewmodel items:
public class itemviewmodel { public observablecollection<itemviewmodel> items { get; private set; } public string name { get; set; } public itemviewmodel() { items = new observablecollection<itemviewmodel>(); } } then can define treeview hierarchicaldatatemplate itemtemplate:
<treeview itemssource="{binding items}"> <treeview.itemtemplate> <hierarchicaldatatemplate itemssource="{binding items}" > <textblock text="{binding name}"> <textblock.inputbindings> <mousebinding mouseaction="leftclick" command="{binding datacontext.selectitem, relativesource={relativesource findancestor, ancestortype=treeview}}" commandparameter="{binding}" /> </textblock.inputbindings> </textblock> </hierarchicaldatatemplate> </treeview.itemtemplate> </treeview> the crucial part binding treeviews datacontext.selectitemcommand mousebinding of each item , passing item in parameter. can handle selection (setting selecteditem, etc.) in viewmodel.
wpf mvvm treeview selecteditem
No comments:
Post a Comment