c#wpf textbox - 添加文本到输入TextBox

时间:2017-02-06 13:29:14

标签: c# wpf events textbox

我想添加百分号"%"当用户插入文本时,到wpf 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没有影响......

如何实现这一结果?

谢谢

3 个答案:

答案 0 :(得分:1)

您可以使用一个标志来决定是否应该在事件处理程序中实际设置Text属性:

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

答案 1 :(得分:0)

如果您绑定您的Text媒体资源,则可以使用StringFormat

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

查看this教程。

答案 2 :(得分:0)

  

但是当用户插入输入时,它对TextBox没有影响......

您需要定义source属性并将DataContext的{​​{1}}设置为定义它的类,例如:

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