Mar*_*eIV 10 wpf textbox input
我们正在寻找一种方法来使文本框替换某些字符作为其中的人物类型.注意,我们专注于控件本身,而不是绑定,视图模型等.为了这个问题,假设有一个窗口,文本框位于其中间,没有别的.没有数据,没有视图模型,没有绑定等.
我已经更新了这个问题,因为看起来下面的所有答案都集中在绑定,依赖属性,coersion等等.虽然我很欣赏这些建议,但如上所述,我们的控制不是绑定控件,所以它们不适用.
现在虽然我可以解释原因,但这会使这篇文章的篇幅延长五倍,因为它实际上是一个复杂而高级的用例,但这与问题本身无关,这就是为什么我简化了我们的场景下面关注我们试图解决的具体问题,这是关于文本框控件,或者可能是在键入时替换字符的子类.
希望现在更有意义.
Eli*_*bel 17
完成此任务的最佳方法是使用该TextChanged事件:
private void OnTextChanged(object sender, TextChangedEventArgs e)
{
var tb = (TextBox)sender;
using (tb.DeclareChangeBlock())
{
foreach (var c in e.Changes)
{
if (c.AddedLength == 0) continue;
tb.Select(c.Offset, c.AddedLength);
if (tb.SelectedText.Contains(' '))
{
tb.SelectedText = tb.SelectedText.Replace(' ', '_');
}
tb.Select(c.Offset + c.AddedLength, 0);
}
}
}
Run Code Online (Sandbox Code Playgroud)
这有几个好处:
| 归档时间: |
|
| 查看次数: |
7999 次 |
| 最近记录: |