繁体   English   中英

c#wpf文本框-向输入文本框添加文本

[英]c# wpf textbox - adding a text to input 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无效。

我怎样才能达到那个结果?

谢谢

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

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

如果要绑定 Text属性,则可以使用StringFormat

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

查看教程。

但是当用户插入输入时,它对TextBox无效。

您需要定义source属性,并将TextBoxDataContext设置为定义该属性的类,例如:

<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; }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM