Silverlight 如何自动设置文本框的上限

Silverlight 如何自动设置文本框的上限,silverlight,silverlight-4.0,Silverlight,Silverlight 4.0,如何使用户在silverlight的文本框中键入字母时,将这些字母更改为所有大写字母?同时仍然触发所有相同的事件,如按键。最简单的方法是: private void tb_TextChanged(object sender, TextChangedEventArgs e) { var tb = (TextBox)sender; var caret = tb.CaretIndex; tb.Text = tb.Text.ToUpper(); tb.CaretIndex = caret

如何使用户在silverlight的文本框中键入字母时,将这些字母更改为所有大写字母?同时仍然触发所有相同的事件,如按键。

最简单的方法是:

private void tb_TextChanged(object sender, TextChangedEventArgs e)
{
  var tb = (TextBox)sender;
  var caret = tb.CaretIndex;
  tb.Text = tb.Text.ToUpper();
  tb.CaretIndex = caret;
}
如果您想节省更多的性能,请处理LostFocus事件(这样您也不必担心carret的位置):


但是如果数据绑定到一个模型/实体,我会调用绑定对象属性setter上的
ToUpper()
OnPropertyChanged
OnTextChanged
或实体中的任何内容。

如果想要避免代码隐藏或自定义控件(最好),这种功能可以通过行为来实现

e、 g.该文本框将其附加到的任何文本框转换为大写


然后只需在Blend中拖放或在VS2010中手动添加触发器。

除了使用嵌入的all caps字体外,没有简单的方法可以做到这一点。所有其他方式都干扰了文本框的工作方式

private void tb_LostFocus(object sender, RoutedEventArgs e)
{
  var tb = (TextBox)sender;
  tb.Text = tb.Text.ToUpper();
}