Пользовательский элемент управления WPF со свойством типа Enum - PullRequest
2 голосов
/ 31 июля 2009

У меня есть UserControl с именем InputSensitiveTextBox, который наследуется от TextBox. У него есть свойство, которое я определяю и которое называется CurrentInputType, которое имеет тип MyControlsNamespace.SupportedInputTypes (со значениями Keyboard, Mouse, Touchpad, VirtualKey). Мне нужно, чтобы это свойство было установлено в Xaml так же, как я мог бы установить HorizontalAlignment или ScrollbarVisibility как таковой:

MyControlsNamespace.InputSensitiveTextBox Background="Black" CurrentInputType="Keyboard"

Пожалуйста, сообщите:)

Ответы [ 2 ]

2 голосов
/ 01 августа 2009

Вам нужно использовать расширение разметки Static для ссылки на ваше перечисление в xaml, а также вам нужно добавить его пространство имен в ваши объявления пространства имен.

xmlns:MyControlsNamespace ="clr-namespace:MyControlsNamespace"

<MyControlsNamespace:InputSensitiveTextBox 
    CurrentInputType="{x:Static MyControlsNamespace:SupportedInputTypes.Keyboard}"
    />
1 голос
/ 31 июля 2009

Является ли ваш CurrentInputType свойством зависимости?

Если здесь нет кода для замены вашего старого свойства:

public SupportedInputTypes CurrentInputType
{
    get { return (SupportedInputTypes)GetValue(CurrentInputTypeProperty); }
    set { SetValue(CurrentInputTypeProperty, value); }
}

// Using a DependencyProperty as the backing store for CurrentInputType.  This enables animation, styling, binding, etc...
public static readonly DependencyProperty CurrentInputTypeProperty =
    DependencyProperty.Register("CurrentInputType", typeof(SupportedInputTypes), typeof(InputSensitiveTextBox), new PropertyMetadata(SupportedInputTypes.Keyboard));

В PropertyMetadata вы определяете значение по умолчанию ..

Надеюсь, это решит вашу проблему!

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