Эксперты,
Я написал пользовательскую форму под названием "DimensionLine", которую я использую в различных местах моего пользовательского интерфейса.Форма состоит из линии со стрелкой на каждом конце.Он работает нормально, но одно из свойств зависимости не может быть установлено с помощью стиля, и я просто не могу понять, что я сделал неправильно.
Это части кода, которые не будут работать должным образом:
public class DimensionLine : Shape
{
public static readonly DependencyProperty ArrowsSizeProperty =
DependencyProperty.Register("ArrowsSize", typeof(Size), typeof(DimensionLine),
new FrameworkPropertyMetadata(new Size(10, 10),
FrameworkPropertyMetadataOptions.AffectsArrange | FrameworkPropertyMetadataOptions.AffectsMeasure,
debug)); <-- I added this to listen for changes to the property ...
private static void debug(DependencyObject dObj, DependencyPropertyChangedEventArgs e)
{
// ERROR! this code never receives value from the Style. Why?
}
public Size ArrowsSize
{
get { return (Size) GetValue(ArrowsSizeProperty); }
set { SetValue(ArrowsSizeProperty, value); }
}
}
XAML:
<MyXaml.Resources>
<Style x:Key="SmallDimensionLine" TargetType="{x:Type cc:DimensionLine}" BasedOn="{StaticResource DimensionLine}">
<Setter Property="ArrowsSize" Value="4,1.5" />
</Style>
</MyXaml.Resources>
Просто чтобы убедиться, что я добавил прослушиватель обратного вызова для метаданных свойства зависимостей и отлаживал его через точку останова, но указанное значениечерез стиль просто не было написано.
Есть ли что-то еще, что нужно сделать, чтобы d-свойство соответствовало стилям?
Спасибо