Note that there are some explanatory texts on larger screens.

plurals
  1. POWPF Template Binding in ToggleButton UserControl
    primarykey
    data
    text
    <p>I'm developing a basic dip-switch user control as a personal learning exercise. Originally I had it set up where you could declare some custom color properties on the user control, and they would be used on elements inside the control.</p> <p>However, I recenly discovered ToggleButtons, and rebuilt my control to take advantage of them. Since then, my custom color properties (SwitchColor and SwitchBkgndColor) no longer work properly. They are always rendered with the default colors, not the colors I specified when I place them in my Window. Here's some code:</p> <pre><code> &lt;UserControl x:Class="DipSwitchToggleBtn" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:app="clr-namespace:SwitchesApp" Width="20" Height="40"&gt; &lt;ToggleButton Name="ToggleBtn" IsThreeState="False"&gt; &lt;ToggleButton.Template&gt; &lt;ControlTemplate&gt; &lt;Canvas Name="SwitchBkgnd" Background="{TemplateBinding app:DipSwitchToggleBtn.SwitchBkgndColor}" &gt; &lt;Rectangle Name="SwitchBlock" Fill="{TemplateBinding app:DipSwitchToggleBtn.SwitchColor}" Width="16" Height="16" Canvas.Top="22" Canvas.Left="2" /&gt; &lt;/Canvas&gt; &lt;ControlTemplate.Triggers&gt; &lt;Trigger Property="ToggleButton.IsChecked" Value="True"&gt; &lt;Trigger.EnterActions&gt; &lt;BeginStoryboard&gt; &lt;Storyboard&gt; &lt;DoubleAnimation Storyboard.TargetName="SwitchBlock" Duration="00:00:00.05" Storyboard.TargetProperty="(Canvas.Top)" To="2" /&gt; &lt;/Storyboard&gt; &lt;/BeginStoryboard&gt; &lt;/Trigger.EnterActions&gt; &lt;Trigger.ExitActions&gt; &lt;BeginStoryboard&gt; &lt;Storyboard&gt; &lt;DoubleAnimation Storyboard.TargetName="SwitchBlock" Duration="00:00:00.05" Storyboard.TargetProperty="(Canvas.Top)" To="22" /&gt; &lt;/Storyboard&gt; &lt;/BeginStoryboard&gt; &lt;/Trigger.ExitActions&gt; &lt;/Trigger&gt; &lt;/ControlTemplate.Triggers&gt; &lt;/ControlTemplate&gt; &lt;/ToggleButton.Template&gt; &lt;/ToggleButton&gt; &lt;/UserControl&gt; </code></pre> <p>...and the code behind:</p> <pre><code>Partial Public Class DipSwitchToggleBtn Public Property State() As Boolean Get Return Me.ToggleBtn.IsChecked End Get Set(ByVal value As Boolean) Me.ToggleBtn.IsChecked = value End Set End Property Public Sub Toggle() Me.State = Not Me.State End Sub #Region " Visual Properties " Public Shared ReadOnly SwitchColorProperty As DependencyProperty = _ DependencyProperty.Register("SwitchColor", _ GetType(Brush), GetType(DipSwitchToggleBtn), _ New FrameworkPropertyMetadata(Brushes.LightGray)) Public Property SwitchColor() As Brush Get Return GetValue(SwitchColorProperty) End Get Set(ByVal value As Brush) SetValue(SwitchColorProperty, value) End Set End Property Public Shared ReadOnly SwitchBkgndColorProperty As DependencyProperty = _ DependencyProperty.Register("SwitchBkgndColor", _ GetType(Brush), GetType(DipSwitchToggleBtn), _ New FrameworkPropertyMetadata(Brushes.Gray)) Public Property SwitchBkgndColor() As Brush Get Return GetValue(SwitchBkgndColorProperty) End Get Set(ByVal value As Brush) SetValue(SwitchBkgndColorProperty, value) End Set End Property #End Region End Class </code></pre> <p>The default Gray and LightGray show up in the VS2008 designer and the compiled app, but when I do something like this in my window:</p> <pre><code>&lt;app:DipSwitchToggleBtn x:Name="DipSwitchTest" SwitchColor="#0000FF" SwitchBkgndColor="#000000" /&gt; </code></pre> <p>The colors I specified for this instance do not get used. Everything compiles without error, but my control is still displayed with the default colors.</p> <p>I believe there is some new hierarchy at play since I nested my items in the ToggleButton.</p> <p>Any help would be appreciated. Thank you.</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload