2009-07-31 4 views
2

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

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

Пожалуйста посоветуйте :)

+0

Вы пробовали просто ввести значение перечисления, как в HorizontalAlignment/ScrollbarVisibility? Вы получаете какие-либо ошибки? –

+1

есть. Он говорит, что он не может преобразовать строку в значение enum, как я и ожидал. :/ – Kamiikoneko

+0

Почему 'MyControlsNamespace' в вашем примере кода? –

ответ

2

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

xmlns:MyControlsNamespace ="clr-namespace:MyControlsNamespace" 

<MyControlsNamespace:InputSensitiveTextBox 
    CurrentInputType="{x:Static MyControlsNamespace:SupportedInputTypes.Keyboard}" 
    /> 
1

Вашего 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 вы определяете по умолчанию ..

Надежда это фиксирует вашу проблему!

+0

хорошо, проблема заключается в том, что разметка не знает, что такое тип SupportedInputTypes. Не уверен, что свойство зависимостей исправит это ... – Kamiikoneko

+0

Вы всегда можете установить значение в xaml с расширением Static, конечно. {X: Статический локальный: SupportedInputTypes.Keyboard} .. Не решение, которое вы хотите, но оно работает .. – Arcturus

Смежные вопросы