title: WPF Trigger not working (sample)
body: <p>I have a custom WPF Line, that I whant to change the Style when selecting with mouse.</p>
  
  <p>I tried to use triggers(see code bellow), but this does not work. </p>
  
  <p>Where is the problem? The <code>IsSelected</code> property is changed, but the <code>StrokeThickness</code> does not change at all... (</p>
  
  <p>XAML:</p>
  
  <pre><code>&lt;UserControl.Resources&gt;
   &lt;Style TargetType="stops:MyLine" 
    x:Key="MyLineStyleKey" x:Name="MyLineStyleName"&gt;
  
    &lt;Style.Triggers&gt;
     &lt;DataTrigger Binding="{Binding Path=IsSelected}" Value="true"&gt;
      &lt;Setter Property="StrokeThickness" Value="10" /&gt;
     &lt;/DataTrigger&gt;
    &lt;/Style.Triggers&gt;
   &lt;/Style&gt;
  &lt;/UserControl.Resources&gt;
  
  &lt;Canvas...
  ...
  &lt;my:MyLine Style="{StaticResource MyLineStyleKey}" x:Name="myLine1" 
   Stroke="Black" X11="10" X22="100" Y11="10" Y22="100"/&gt;
  </code></pre>
  
  <p>Code:</p>
  
  <pre><code>class MyLine : Shape
  {
      public static readonly DependencyProperty X11Property;
      public static readonly DependencyProperty X22Property;
      public static readonly DependencyProperty Y11Property;
      public static readonly DependencyProperty Y22Property;
      public static readonly DependencyProperty IsSelectedProperty;
  
      static MyLine()
      {
          X11Property = DependencyProperty.Register("X11", typeof(double), typeof(MyLine), new FrameworkPropertyMetadata(double.NaN, FrameworkPropertyMetadataOptions.AffectsRender));
          X22Property = DependencyProperty.Register("X22", typeof(double), typeof(MyLine), new FrameworkPropertyMetadata(double.NaN, FrameworkPropertyMetadataOptions.AffectsRender));
          Y11Property = DependencyProperty.Register("Y11", typeof(double), typeof(MyLine), new FrameworkPropertyMetadata(double.NaN, FrameworkPropertyMetadataOptions.AffectsRender));
          Y22Property = DependencyProperty.Register("Y22", typeof(double), typeof(MyLine), new FrameworkPropertyMetadata(double.NaN, FrameworkPropertyMetadataOptions.AffectsRender));
          IsSelectedProperty = DependencyProperty.Register("IsSelected", typeof(bool), typeof(MyLine), new FrameworkPropertyMetadata(false));
      }
  
      public MyLine()
          : base()
      {
          this.PreviewMouseLeftButtonDown += new System.Windows.Input.MouseButtonEventHandler(DirectionLine_PreviewMouseLeftButtonDown);
      }
  
      void DirectionLine_PreviewMouseLeftButtonDown(object sender, System.Windows.Input.MouseButtonEventArgs e)
      {
          this.IsSelected = !this.IsSelected;
      }
  
      [TypeConverter(typeof(LengthConverter))]
      public double X11 { get { return (double)GetValue(X11Property); } set { SetValue(X11Property, value); } }
      [TypeConverter(typeof(LengthConverter))]
      public double X22 { get { return (double)GetValue(X22Property); } set { SetValue(X22Property, value); } }
      [TypeConverter(typeof(LengthConverter))]
      public double Y11 { get { return (double)GetValue(Y11Property); } set { SetValue(Y11Property, value); } }
      [TypeConverter(typeof(LengthConverter))]
      public double Y22 { get { return (double)GetValue(Y22Property); } set { SetValue(Y22Property, value); } }
      [TypeConverter(typeof(BooleanConverter))]
      public bool IsSelected { get { return (bool)GetValue(IsSelectedProperty); } set { SetValue(IsSelectedProperty, value); } }
  
  
      protected override System.Windows.Media.Geometry DefiningGeometry
      {
          get
          {
              var geometryGroup = new GeometryGroup();
              geometryGroup.Children.Add(new LineGeometry(new Point(X11, Y11), new Point(X22, Y22)));
              return geometryGroup;
          }
      }
  }
  </code></pre>