c# - WPF DataGrid - Databinding Column to Page's ViewModel -
i'm trying bind data on 1 of columns data that's in page's viewmodel (as opposed objects grid bound to).
what have below recommended here, no avail.
<datagridtemplatecolumn> <datagridtemplatecolumn.celltemplate> <datatemplate> <button content="{binding elementname=layoutroot, path=datacontext.junk}"></button> </datatemplate> </datagridtemplatecolumn.celltemplate> </datagridtemplatecolumn>
in viewmodel
public string junk { get; set; }
which set "hello"
in viewmodel's constructor
does see i'm doing wrong?
edit
here's entire xaml. relevant column way @ bottom, in grid within grid
also - i'm having trouble getting entire source here again (not sure if it's citrix or what) took same exact binding expression that's not working in datagrid's button, , dropped onto text of plain old textblock apart grid, , worked charm. added new dummy text column grid, , used same binding expression text, , still did not work. seems binding expression fine, refuses work anywhere near grid.
<usercontrol x:class="mainapp.wpf.ucfmvhistorydisplaygrid" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:ignorable="d" d:designheight="300" d:designwidth="1000" x:name="layoutroot"> <usercontrol.resources> <style x:name="rightalignedcolumn" x:key="rightalignedcolumn" targettype="textblock"> <setter property="horizontalalignment" value="right" /> </style> <style x:name="centeralignedcolumn" x:key="centeralignedcolumn" targettype="textblock"> <setter property="horizontalalignment" value="center" /> </style> </usercontrol.resources> <grid> <datagrid x:name="dbtop" itemssource="{binding propertygroupsource}" horizontalalignment="left" background="white" canuseraddrows="false" canuserdeleterows="false" canuserreordercolumns="false" canuserresizerows="false" isreadonly="true" autogeneratecolumns="false" grid.row="1" width="800"> <datagrid.columns> <datagridtextcolumn width="120" header="property num" binding="{binding propertynum}"></datagridtextcolumn> <datagridtextcolumn width="120" header="alt description" binding="{binding altdescription}"></datagridtextcolumn> <datagridtextcolumn width="80" header="county" binding="{binding county}"></datagridtextcolumn> <datagridtextcolumn width="100" header="state" binding="{binding state}" elementstyle="{staticresource centeralignedcolumn}"></datagridtextcolumn> <datagridtextcolumn width="85" header="phase" binding="{binding phase}"></datagridtextcolumn> <datagridtextcolumn width="85" header="fmv" binding="{binding fmvtotal}"></datagridtextcolumn> <datagridtextcolumn width="100" header="assessed value" binding="{binding assessedvaluetotal}"></datagridtextcolumn> </datagrid.columns> <datagrid.rowdetailstemplate> <datatemplate> <border margin="5" borderbrush="black" borderthickness="1"> <datagrid margin="5" background="white" canuseraddrows="false" canuserdeleterows="false" canuserreordercolumns="false" canuserresizerows="false" isreadonly="true" autogeneratecolumns="false" grid.row="1" itemssource="{binding propertyfmvsource}"> <datagrid.columns> <datagridtextcolumn width="125" header="county acct num" binding="{binding property.countyaccountnum, stringformat=d}" elementstyle="{staticresource rightalignedcolumn}"></datagridtextcolumn> <datagridtextcolumn width="80" header="city" binding="{binding property.city, stringformat=d}" elementstyle="{staticresource rightalignedcolumn}"></datagridtextcolumn> <datagridtextcolumn width="80" header="jurisdiction" binding="{binding property.jurisdiction, stringformat=d}" elementstyle="{staticresource rightalignedcolumn}"></datagridtextcolumn> <datagridtextcolumn width="80" header="fmv date" binding="{binding mostrecentfmv.fmvdate, stringformat=d}" elementstyle="{staticresource rightalignedcolumn}"></datagridtextcolumn> <datagridtextcolumn width="100" header="fmv" binding="{binding mostrecentfmv.fmv, stringformat=n0}" elementstyle="{staticresource rightalignedcolumn}"></datagridtextcolumn> <datagridtextcolumn width="85" header="assess ratio" binding="{binding mostrecentfmv.assessmentratio, stringformat=n3}" elementstyle="{staticresource rightalignedcolumn}"></datagridtextcolumn> <datagridtextcolumn width="105" header="assessed value" binding="{binding mostrecentfmv.assessedvalue, stringformat=n0}" elementstyle="{staticresource rightalignedcolumn}"></datagridtextcolumn> <datagridtemplatecolumn> <datagridtemplatecolumn.celltemplate> <datatemplate> <button content="{binding elementname=layoutroot, path=datacontext.junk}"></button> </datatemplate> </datagridtemplatecolumn.celltemplate> </datagridtemplatecolumn> </datagrid.columns> </datagrid> </border> </datatemplate> </datagrid.rowdetailstemplate> </datagrid> </grid>
binding datacontext of containing datagrid using relativesource binding should work:
<button content="{binding relativesource={relativesource mode=findancestor, ancestortype=datagrid, ancestorlevel=2}, path=datacontext.junk}"></button>
as you've nested datagrids, ancestorlevel must set "2" bind datacontext of outermost datagrid.
Comments
Post a Comment