Пытаюсь зарегистрировать свойство зависимости
public static readonly DependencyProperty BrushSizeProperty;
static MainWindow()
{
BrushSizeProperty = DependencyProperty.Register("BrushSize",typeof(int),typeof(InkCanvas),
new FrameworkPropertyMetadata(
// Значение свойства по умолчанию.
(int)1,
// Опции метаданных.
FrameworkPropertyMetadataOptions.AffectsMeasure,
// Делегат, указывающий на свойство, вызываемое при изменении свойства.
new PropertyChangedCallback(FrameworkElement.OnTransformDirty))
);
}
- на строке new PropertyChangedCallback(FrameworkElement.OnTransformDirty)) -там где делегат PropertyChangedCallback - у меня не видит статический метод OnTransformDirty(). Почему?
Потому что у вас при указании обработчика, который будет срабатывать при изменении свойства зависимости BrushSizeProperty указан приватный метод OnTransformDirty класса FrameworkElement.
Посмотрите, для того что бы создать свойство зависимости, необходимо выполнить всего несколько действий.
public partial class MyUserControl : UserControl
{
public MyUserControl()
{
InitializeComponent();
}
// 1 Создать обертку над свойством зависимостей.
public int BrushSize
{
get
{
return (int)GetValue(BrushSizeProperty);
}
set
{
SetValue(BrushSizeProperty, value);
}
}
// 2 Создать и зарегистрировать свойство зависимости.
// При этом, во время регистрации свойства мы можем его сконфигурировать.
// В данном примере:
// nameof(BrushSize) - имя свойства
// typeof(int) - тип свойства
// typeof(MyUserControl) - тип, в который владеет данным свойством
// FrameworkPropertyMetadata - один из наследников PropertyMetadata,
// позволяющий указать дополнительные настройки. В нашем случае мы
// указываем:
// значение по умолчанию
// говорим свойство будет иметь двухстороннюю привязку
// а так же определяем обработчик, который будет срабатывать
// при изменении свойства
public static readonly DependencyProperty BrushSizeProperty =
DependencyProperty.Register(
nameof(BrushSize),
typeof(int),
typeof(MyUserControl),
new FrameworkPropertyMetadata(default(int),
FrameworkPropertyMetadataOptions.BindsTwoWayByDefault,
BrushSizeChangedCallback));
private static void BrushSizeChangedCallback(DependencyObject dependencyObject,
DependencyPropertyChangedEventArgs dependencyPropertyChangedEventArgs)
{
}
}
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости