i have custom control contains webview. have viewmodel takes in webview in constructor , modifies it. passes webview control vm modified.
originally, wanted this:
public static readonly dependencyproperty accountproperty = dependencyproperty.register("account", typeof(account), typeof(accountviewcontrol), new propertymetadata(null)); public account account { { return (account)getvalue(accountproperty); } set { setvalue(accountproperty, value); siteviewmodel sitevm = new siteviewmodel(wv: wvaccount); sitevm.currentaccount = value; sitevm.logintosite(); } } each control has webview named wvaccount passed siteviewmodel constructor. however, since setter bypassed when using dependencyproperty, have use static propertychanged event call sitevm.logintosite won't have access webview within control's xaml.
my first thought add webview property sitevm , bind ui's webview element, however, can't seem find way bind entire ui element.
here's want achieve:
public static readonly dependencyproperty siteviewmodelproperty = dependencyproperty.register("account", typeof(siteviewmodel), typeof(accountviewcontrol), new propertymetadata(null, onsiteviewmodelchanged)); private static void onsiteviewmodelchanged(dependencyobject d, dependencypropertychangedeventargs e) { siteviewmodel sitevm = (siteviewmodel)e.newvalue; sitevm.logintosite(); } and bind so:
<webview {x:bind=sitevm.webview} visibility="{binding showeditcontrol, elementname=accountcontrol, converter={themeresource inversevisconverter}}" x:name="wvaccount" /> is there perhaps way (or better way) achieve this?
generally, think developers agree bad idea. doesn't mean can't it, though. let's pretend element named myelement. this:
<page.datacontext> <local:myviewmodel element="{binding, elementname=myelement}" /> </page.datacontext> just remember element property create in viewmodel of type uielement or actual element type if want more strongly-typed.
best of luck!
Comments
Post a Comment