wpf DependencyProperty Не принимает значение по умолчанию для краткости - PullRequest
4 голосов
/ 16 апреля 2010

Я пытался использовать это свойство зависимости в моем коде, но это выдает ошибку, которая говорит о том, что тип значения по умолчанию не соответствует типу свойства 'MyProperty' Но short должен принять 0 в качестве значения по умолчанию.

Если я попытаюсь присвоить ему значение NULL в качестве значения по умолчанию, оно будет работать, даже если это тип, отличный от nullabel. Как это случилось ..

public short MyProperty
{
   get { return (short)GetValue(MyPropertyProperty); }
   set { SetValue(MyPropertyProperty, value); }
}

Использование DependencyProperty в качестве резервного хранилища для MyProperty. Это включает анимацию, стилизацию, привязку и т. Д. *

public static readonly DependencyProperty MyPropertyProperty =
    DependencyProperty.Register(
        "MyProperty",
        typeof(short),
        typeof(Window2),
        new UIPropertyMetadata(0)
    );

Ответы [ 2 ]

13 голосов
/ 17 апреля 2010

Проблема в том, что компилятор C # интерпретирует литеральные значения как целые числа. Вы можете сказать, чтобы они анализировались как long или ulongs (40L - это long, 40UL - это ulong), но не существует простого способа объявить короткий.

Простое приведение литерала сработает:

public short MyProperty
{
    get { return (short)GetValue(MyPropertyProperty); }
    set { SetValue(MyPropertyProperty, value); }
}

public static readonly DependencyProperty MyPropertyProperty = 
   DependencyProperty.Register(
      "MyProperty", 
      typeof(short),
      typeof(Window2),
      new UIPropertyMetadata((short)0)
   );
0 голосов
/ 16 апреля 2010
public short MyProperty
{
    get { return (short)GetValue(MyPropertyProperty); }
    set { SetValue(MyPropertyProperty, value); }
}


// Using a DependencyProperty as the backing store for MyProperty.  This enables animation, styling, binding, etc...
        public static readonly DependencyProperty MyPropertyProperty =
            DependencyProperty.Register("MyProperty", typeof(short), typeof(Window2), new UIPropertyMetadata((short)0));
     }

Кажется, это работает ... похоже, что 0 будет интерпретироваться как int .. но почему ..?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...