2017-02-06 4 views
0

Я хочу добавить знак процента «%» к любому входному тексту в текстовом поле wpf TextBox, когда пользователь вставляет текст.C# wpf textbox - добавление текста для ввода TextBox

Таким образом, когда пользователь будет вводить номер, будет добавлен знак% на любое число в поле ввода, , например: 5 будет показано в поле Текст 5% 0 - 0% 100 - 100%

Я попытался следующий код:

<TextBox x:Name="TextBoxInputValue" Text="{Binding AddPercentSign, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0}%}" Style="{StaticResource @TextBoxStyle}" Width="100" Height="20"></TextBox> 

и:

public int AddPercentSign{ get; set; } 

и:

TextBoxInputValue.DataContext = this; 

Но это не имеет никакого влияния на TextBox, когда пользователь вставить вход ...

Как я могу достичь этого результата?

Спасибо

ответ

1

Вы можете использовать флаг, который решает, следуешь ли вы на самом деле установить Text свойства в обработчике события:

private bool _handleEvent = true; 
private void TextChanged(object sender, TextChangedEventArgs e) 
{ 
    if (_handleEvent) 
    { 
     _handleEvent = false; 
     MyTextBox.Text = MyTextBox.Text + "%$#"; 
     _handleEvent = true; 
    } 
} 
+0

Благодаря это работает ... Но не тихо, как я exep ted ... Я отредактировал свой вопрос –

+0

Не можете ли вы просто изменить код на: MyTextBox.Text = MyTextBox.Text + "%"; ? – mm8

+0

Нет причин, когда пользователь вставляет, например, 12345, я получаю: 12345 %%%%% –

0

Если вы связывания вашего Text свойства, вы можете использовать StringFormat.

<TextBox Text="{Binding SomeProperty, StringFormat={}{0}%}" /> 

Отъезд this учебник.

+0

Я попытался добавить: «{Binding Path = Percentage, StringFormat = {} {0}%}», как в этом вопросе: http://stackoverflow.com/questions/1283049/how-to-set-wpf-string-format -as-percent-wihout-multiplying-by-100, но он ничего не делает для моего ввода в TextBox ... Я отредактировал свой вопрос –

+0

Я редактирую вопрос с последними изменениями –

0

Но это не имеет никакого влияния на TextBox, когда пользователь вставить вход ...

Вам нужно определить свойства источника и установите DataContext в TextBox в классе, где она определена , например:

<TextBox x:Name="textBox1" Text="{Binding SomeProperty, UpdateSourceTrigger=PropertyChanged, StringFormat='{}{0}%'}" /> 

public partial class Window1 : Window 
{ 
    public Window1() 
    { 
     InitializeComponent(); 
     textBox1.DataContext = this; 
    } 

    public int SomeProperty { get; set; } 
} 
+0

Спасибо, но он не работает ... –

+0

Что именно означает «не работает»? – mm8

+0

Только что отредактировал вопрос ... –

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