c# - WPF databinding not working for border or textblock in styled tabitem -


i trying bind border's background , text in textblock change on events. both of these items exist inside tab header has been styled application.

if hard code color , text works properly, when try bind background color , text no longer appear. missing databinding working properly?

xaml

<usercontrol x:class="project.tabpanel"              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"               xmlns:controls="clr-namespace:project"              datacontext="{binding relativesource={relativesource self}}"              mc:ignorable="d"               d:designheight="300" d:designwidth="600">      <tabcontrol style="{staticresource lefttabcontrol}" background="#fafafafa" horizontalalignment="stretch">         <tabitem x:name="connectionlabeltab" style="{staticresource tab2}" focusable="false">             <tabitem.headertemplate>                 <datatemplate>                     <border x:name="connectionlabelborder" background="{binding labelcolor}" width="70">                         <textblock x:name="connectionlabeltext"                             text="{binding labeltext}" padding="0,4,0,4"                             foreground="black" horizontalalignment="center" verticalalignment="center"                              fontsize="10"/>                     </border>                 </datatemplate>             </tabitem.headertemplate>         </tabitem>     </tabconrol> </usercontrol> 

xaml.cs

/// <summary> /// interaction logic tabpanel.xaml /// </summary> public partial class tabpanel : usercontrol {     string green = "#ff0a7e07";     brushconverter bc = new brushconverter();      brush labelcolor;     string labeltext;      public tabpanel()     {         labelcolor = (brush)bc.convertfromstring(green);         labeltext = "connected";          initializecomponent();        }      public brush labelcolor { { return labelcolor; } }     public string labeltext { { return labeltext; } } } 

you have wrong datacontext in datatemplate, add:

datacontext="{binding relativesource={relativesource ancestortype=usercontrol}, path=datacontext}"  

to bordercontrol in datatemplate, complete template:

<datatemplate>     <border x:name="connectionlabelborder" datacontext="{binding relativesource={relativesource ancestortype=usercontrol}, path=datacontext}" background="{binding labelcolor}" width="70">         <textblock x:name="connectionlabeltext"                    text="{binding labeltext}" padding="0,4,0,4"                    foreground="black" horizontalalignment="center" verticalalignment="center"                    fontsize="10" />     </border> </datatemplate> 

Comments