.net - Silverlight HyperlinkButton in DataGrid column. Have to click twice -
i have datagrid column has hyperlinkbuttons. have click button twice have button it's supposed do. think first click selects row.
i believe may going on event doesn't bubble (or down?) hyperlink button.
ideas?
edit
here's xaml:
<sdk:datagrid grid.row="1" x:name="workflowsgrid" margin="6,20,6,0" itemssource="{binding filteredsource,elementname=workflowsfilter}" autogeneratecolumns="false" selecteditem="{binding selectedworkflow,mode=twoway}" selectionchanged="workflowsgrid_selectionchanged"> <sdk:datagrid.columns> <sdk:datagridtextcolumn header="name" binding="{binding description}"/> <sdk:datagridtemplatecolumn header="action" > <sdk:datagridtemplatecolumn.celltemplate> <datatemplate> <contentcontrol content="{binding converter={staticresource actionconverter}}"/> </datatemplate> </sdk:datagridtemplatecolumn.celltemplate> </sdk:datagridtemplatecolumn> </sdk:datagrid.columns> </sdk:datagrid>
and here's converter adds hyperlink buttons:
/// <summary> /// dynamically controls action cell in workflows grid /// </summary> protected class actionvalueconverter : ivalueconverter { private workflowmanager _page; public actionvalueconverter(workflowmanager page) { _page = page; } public object convert(object value, type targettype, object parameter, system.globalization.cultureinfo culture) { var workflow = (workflowinstance)value; if (workflow.status == "complete") { // create hyperlink buttons each action workflow supports var btns = workflow.definition.actions .select(x => { hyperlinkbutton btn = new hyperlinkbutton { tag = tuple.create(workflow, x.key), content = x.value, }; btn.click += new routedeventhandler(_page.actionbutton_click); return btn; }); // stack panel contain buttons stackpanel sp = new stackpanel { orientation = orientation.vertical }; foreach (var btn in btns) sp.children.add(btn); return sp; } else if (workflow.status == "in progress") { // create cancel hyperlink button hyperlinkbutton btncancel = new hyperlinkbutton { content = "cancel", tag = tuple.create(workflow, "cancel") }; btncancel.click += new routedeventhandler(_page.actionbutton_click); return btncancel; } else { throw new exception("workflow status not supported: " + workflow.status); } } public object convertback(object value, type targettype, object parameter, system.globalization.cultureinfo culture) { throw new notimplementedexception(); } }
may should use edit template instead of cell template specified in following link:
http://forums.silverlight.net/p/132619/296134.aspx
that ways link column in edit mode , should require single click.
edit:
<sdk:datagridtemplatecolumn.celleditingtemplate >
instead of
<sdk:datagridtemplatecolumn.celltemplate>
hope helps!
Comments
Post a Comment