[英]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属性,并将TextBox
的DataContext
设置为定义该属性的类,例如:
<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.