Проблема DependencyProperty с двойным и одинарным - PullRequest
3 голосов
/ 22 декабря 2009

Silverligh 4, VS 2010.

Создание пользовательского элемента управления. (Не просто UserControl, а открытый класс HandPart: Control и шаблон в \ themes)

Затем я создал новый DependencyProperty с помощью вспомогательного фрагмента:

#region SomeDouble (DependencyProperty)

/// <summary>
/// A description of the property.
/// </summary>
public Double SomeDouble
{
    get { return (Double)GetValue(SomeDoubleProperty); }
    set { SetValue(SomeDoubleProperty, value); }
}
public static readonly DependencyProperty SomeDoubleProperty =
    DependencyProperty.Register("SomeDouble", typeof(Double), typeof(HandPart),
      new PropertyMetadata(0));

#endregion

В результате решение компилируется без каких-либо ошибок и сообщений, но не запускается. Когда я создаю DependencyProperty с, например, типом Int с типом Double или Single, он работает нормально.

В чем проблема (функция?) С плавающей точкой? Почему я не могу создать DP с типами float?

1 Ответ

6 голосов
/ 22 декабря 2009

Аргумент 0, который вы передаете конструктору PropertyMetadata, будет интерпретироваться как int, а не double. Попробуйте вместо 0.0:

public static readonly DependencyProperty SomeDoubleProperty =
    DependencyProperty.Register("SomeDouble", typeof(Double),
        typeof(HandPart), new PropertyMetadata(0.0));
...