c# - Databinding partially working to custom dependency property in UserControl -


hallo , thank time.

i have peculiar problem. have created usercontol, has custom dependency properties.

if implement usercontrol, , bind static text. working fine.

however, if try set value of selected objects properties. not work.

this error getting in output window:

error: bindingexpression path error: 'selectedusecase' property not found on 'helper.usercontrols.usecasepropertydisplay'. bindingexpression: path='selectedusecase.name' dataitem='helper.usercontrols.usecasepropertydisplay'; target element 'helper.usercontrols.usecasepropertydisplay' (name='null'); target property 'text' (type 'string')

usercontrol:
https://github.com/toudahl/softwaredesignhelper/blob/master/helper/usercontrols/displayandeditcontrol.xaml

<usercontrol     x:class="helper.usercontrols.usecasepropertydisplay"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     xmlns:local="using:helper.usercontrols"     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"     mc:ignorable="d"     d:designheight="300"     d:designwidth="400"     datacontext="{binding relativesource={relativesource self}}">      <stackpanel orientation="horizontal"                 margin="260,0,0,0">         <textblock text="{binding label}"                    style="{staticresource usecasetextblock}"                    x:name="textblock_label"/>         <textblock x:name="textblock_propertycontent"                    text="{binding text}"                    style="{staticresource usecaseframeworktextelement}"                    doubletapped="textblock_doubletapped" />         <textbox x:name="textbox_propertycontent"                  text="{binding text}"                  visibility="collapsed"                  style="{staticresource usecasetextbox}"                  lostfocus="textbox_lostfocus" />     </stackpanel> </usercontrol> 

decleration of dependency properties in codebehind:
https://github.com/toudahl/softwaredesignhelper/blob/master/helper/usercontrols/displayandeditcontrol.xaml.cs

    public static readonly dependencyproperty textproperty = dependencyproperty.register(             "text",             typeof(string),             typeof(usecasepropertydisplay),             new propertymetadata(null));      public static readonly  dependencyproperty labelproperty = dependencyproperty.register(         "label",         typeof(string),         typeof(usecasepropertydisplay),         new propertymetadata(null));      public string text     {         { return (string)getvalue(textproperty); }         set {setvalue(textproperty, value);}     }      public string label     {         { return (string)getvalue(labelproperty); }         set { setvalue(labelproperty, value);}     } 

this how implement on in view:
https://github.com/toudahl/softwaredesignhelper/blob/master/helper/viewsandviewmodels/viewusecases.xaml

<uc:usecasepropertydisplay label="name" text="{binding selectedusecase.name, mode=twoway}" /> 

from reading similar questions here, im guessing has way set context. however, solution has been provided people (setting relative source ancestor), doesnt work me. since not available on platform. not sure go here, first time try use usercontrols, , first time use dependency properties. school doesnt start untill few weeks, cant hold of teacher this.

instead of setting datacontext global, set first ui element inherited datacontext: datacontext="{binding relativesource={relativesource findancestor, ancestortype={x:type usercontrol}}}"

as have written, can not use findancestor can try using name , reference it:

<usercontrol     x:class="helper.usercontrols.usecasepropertydisplay"     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"     xmlns:local="using:helper.usercontrols"     xmlns:d="http://schemas.microsoft.com/expression/blend/2008"     xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"     mc:ignorable="d"     d:designheight="300"     d:designwidth="400"     x:name="root">      <stackpanel datacontext="{binding elementname=root}"                                                 orientation="horizontal"                 margin="260,0,0,0">         <textblock text="{binding label}"                    style="{staticresource usecasetextblock}"                    x:name="textblock_label"/>         <textblock x:name="textblock_propertycontent"                    text="{binding text}"                    style="{staticresource usecaseframeworktextelement}"                    doubletapped="textblock_doubletapped" />         <textbox x:name="textbox_propertycontent"                  text="{binding text}"                  visibility="collapsed"                  style="{staticresource usecasetextbox}"                  lostfocus="textbox_lostfocus" />     </stackpanel> </usercontrol> 

Comments

Popular posts from this blog

dns - How To Use Custom Nameserver On Free Cloudflare? -

python - Pygame screen.blit not working -

c# - Web API response xml language -