2015-08-26 4 views
2

Я создал собственный класс текстового поля для проверки ввода пользователя только для использования шестнадцатеричных значений и использовал это новое текстовое поле (HexTextBox) в xaml. Он работает хорошо, но HexTextBox теряет весь стиль от Mahapps, включая цветовую схему и TextBoxHelper. Вы знаете, как использовать этот расширенный TexBox и сохранить стиль?Расширение TextBox в WPF с использованием стиля сохранения MahApps

HexTextBox:

public class HexTextBox : TextBox 
    { 
    public HexTextBox() 
    { 

    } 
    /// <summary> 
    /// Raise when a keyboard key is pressed. 
    /// </summary> 
    /// <param name="e">The event args.</param> 
    protected override void OnPreviewKeyDown(KeyEventArgs e) 
    { 
     if (e.Key == Key.Space) 
     { 
      e.Handled = true; 
     } 

     base.OnPreviewKeyDown(e); 
    } 

    /// <summary> 
    /// Raise when a text will be inputed in the text box object. 
    /// </summary> 
    /// <param name="e">The event args.</param> 
    protected override void OnTextInput(TextCompositionEventArgs e) 
    { 
     int hexNumber; 

     e.Handled = !int.TryParse(e.Text, NumberStyles.HexNumber, CultureInfo.CurrentCulture, out hexNumber); 

     base.OnTextInput(e); 
    } 
} 

Window.xaml

<UserControl 
... 
    xmlns:CoreWPF="clr-namespace:CoreWPF;assembly=CoreWPF" 
...> 

<CoreWPF:HexTextBox 
     Text="{Binding DataXor1, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" 
     Grid.Column="2" Grid.Row="0" 
     controls:TextBoxHelper.ClearTextButton="True" 
     Height="26" 
     TextWrapping="Wrap" 
     CharacterCasing="Upper" 
     VerticalAlignment="Center"/> 

Заранее спасибо!

ответ

4

Создайте стиль по умолчанию для своего пользовательского элемента управления, который будет основан на стиле TextBox.

<Style TargetType="Controls:HexTextBox" BasedOn="{StaticResource {x:Type TextBox}}"/> 
+0

Это сработало! Большое спасибо! –

+0

@LucasReal рад, что помог. Не забудьте отметить ответ. –

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