FrameworkElement не содержит определения для OnTransformDirty

253
02 июля 2017, 12:25

Пытаюсь зарегистрировать свойство зависимости

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(). Почему?

Answer 1

Потому что у вас при указании обработчика, который будет срабатывать при изменении свойства зависимости 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)
    {
    } 
}
READ ALSO
Лаги при управлении змейкой с экрана андроид(при работе в виртуалке unity лагов нет)

Лаги при управлении змейкой с экрана андроид(при работе в виртуалке unity лагов нет)

код скрипта который лежит на Panel в Canvas, при игре на телефоне часто нет реакции на движение пальцем или она некоректна(поворачивает не в ту сторо),...

232
GPGS LoadScores() Unity3D

GPGS LoadScores() Unity3D

Использую данный плагин для Unity3d

214
Поиск файлов в директориях

Поиск файлов в директориях

Необходимо найти все файлы на дискеЕсть такой код:

282
HtmlAgilityPack как убрать пробелы

HtmlAgilityPack как убрать пробелы

Текст парсится в хаотичном порядке, одно слово на первой строке, второе на 2 и тд

274