c#wpf文本框-向输入文本框添加文本
当用户插入文本时,我想在wpf文本框中的任何输入文本中添加百分号“%” 因此,当用户输入数字时,将在输入框中的任何数字上添加%符号, 例如:5将在文本框中显示为5% 0 - 0% 100-100% 我尝试了以下代码:c#wpf文本框-向输入文本框添加文本,c#,wpf,events,textbox,C#,Wpf,Events,Textbox,当用户插入文本时,我想在wpf文本框中的任何输入文本中添加百分号“%” 因此,当用户输入数字时,将在输入框中的任何数字上添加%符号, 例如:5将在文本框中显示为5% 0 - 0% 100-100% 我尝试了以下代码: <TextBox x:Name="TextBoxInputValue" Text="{Binding AddPercentSign, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0}%}" Style="{Stat
<TextBox x:Name="TextBoxInputValue" Text="{Binding AddPercentSign, UpdateSourceTrigger=PropertyChanged, StringFormat={}{0}%}" Style="{StaticResource @TextBoxStyle}" Width="100" Height="20"></TextBox>
以及:
但当用户插入输入时,它对文本框没有影响
我怎样才能达到这个结果
谢谢您可以使用一个标志来决定是否应该在事件处理程序中实际设置
Text
属性:
private bool _handleEvent = true;
private void TextChanged(object sender, TextChangedEventArgs e)
{
if (_handleEvent)
{
_handleEvent = false;
MyTextBox.Text = MyTextBox.Text + "%$#";
_handleEvent = true;
}
}
如果您是绑定您的
文本
属性,则可以使用StringFormat
<TextBox Text="{Binding SomeProperty, StringFormat={}{0}%}" />
查看教程
但当用户插入输入时,它对文本框没有影响
您需要定义源属性,并将文本框的DataContext
设置为定义它的类,例如:
<TextBox x:Name="textBox1" Text="{Binding SomeProperty, UpdateSourceTrigger=PropertyChanged, StringFormat='{}{0}%'}" />
谢谢这是工作。。。但并不像我想象的那样安静。。。我已经编辑了我的问题,你能不能把代码改成:MyTextBox.Text=MyTextBox.Text+“%”?没有原因,然后当用户插入例如12345时,我得到:12345%%%n尝试绑定到int/double/decimal属性,然后使用@Mike Eason建议的StringFormat。一旦你的问题得到回答,请不要完全改变你原来的问题。如果您有其他问题,请问一个新问题。我尝试添加:“{Binding Path=Percentage,StringFormat={}{0}%}”,与此问题相同:但它对我的文本框输入没有任何作用。。。我已经编辑了我的问题您是否真的将AddPercentSign属性添加到定义TextBoxInputValue的同一个类中?如果在文本框中看不到值,则绑定将不起作用。是的,我已将此:public int AddPercentSign{get;set;}添加到同一个类中。请将您的整个代码发布到文件后面好吗?这是一个巨大的文件。。。从另一个角度来看,您能否分享一个执行此任务的工作代码示例?将%sign添加到任何文本插入到TextBoxI中的操作我已经执行了。只是您似乎无法将其应用到代码中。这就是为什么我需要查看您的代码,以便能够告诉您它有什么问题。
<TextBox Text="{Binding SomeProperty, StringFormat={}{0}%}" />
<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; }
}