Stroke и StrokeThickness не поддерживаются DependencyProperties, определенными для этого класса.Внутренне они используют свойства Stroke (Thickness) класса Shape.Одним из вариантов будет определение собственного присоединенного DependencyProperty для каждого, и в PropertyChangeCallback вы можете использовать DP связанного класса Shape для установки значения объекта.Недостатком является локальное значение (а не значение стиля), но оно должно работать для базовых сценариев.например,
public static class ShapeExtensions
{
#region Stroke
public static readonly DependencyProperty StrokeProperty =
DependencyProperty.RegisterAttached("Stroke", typeof(Brush), typeof(ShapeExtensions),
new PropertyMetadata((Brush)null, new PropertyChangedCallback(OnStrokeChanged)));
public static Brush GetStroke(DependencyObject d)
{
return (Brush)d.GetValue(StrokeProperty);
}
public static void SetStroke(DependencyObject d, Brush value)
{
d.SetValue(StrokeProperty, value);
}
private static void OnStrokeChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
{
d.SetValue(Shape.StrokeProperty, e.NewValue);
}
#endregion // Stroke
}