c# - Binding to child item property -


i have pages view models. page displaed in frame using frame.navigationmanager.navigate().

in 1 page have groupbox child datagrid. want groupbox change it's visibility according items count in datagrid.

here have:

<groupbox ....           visibility="{binding elementname=somedatagrid,                                    path=hasitems,                                    converter={staticresource booleantovisibilityconverter}}">         <datagrid x:name="somedatagrid"                   isreadonly="true"                   itemssource="{binding items}"/> </groupbox> 

the problem

after changing page , going have following binding exception

system.windows.data error: 4 : cannot find source binding reference

'elementname=somedatagrid'. bindingexpression:path=hasitems;

i've tried using x:reference got same problem.

could explain i'm doing wrong?

probably, items collection empty @ point , makes groupbox become collapsed. when groupbox gets collapsed, removes content (the datagrid) view.

with datagrid removed view, binding can no longer find reference, breaks.

if you, i'd bind groupbox visibility directly viewmodel property, instead of binding datagrid.

<groupbox ....           visibility="{binding hasitems,                                converter={staticresource booleantovisibilityconverter}}">         <datagrid x:name="somedatagrid"                   isreadonly="true"                   itemssource="{binding items}"/> </groupbox> 

in viewmodel:

public bool hasitems {         {         return items != null && items.count() > 0;     } }  public ienumerable items {         {         // ...     }     set     {         // ...         raisepropertychanged("hasitems");     } } 

Comments

Popular posts from this blog

java - Date formats difference between yyyy-MM-dd'T'HH:mm:ss and yyyy-MM-dd'T'HH:mm:ssXXX -

c# - Get rid of xmlns attribute when adding node to existing xml -