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
Post a Comment