如何自动限制文本框

时间:2010-11-12 02:05:01

标签: silverlight silverlight-4.0

如何制作它,以便当用户在silverlight的文本框中键入字母时,它会将这些字母更改为所有大写字母?同时仍会触发所有相同的事件,例如按键。

3 个答案:

答案 0 :(得分:1)

如果您想避免代码隐藏或自定义控件(最好),可以通过行为获得此类功能。

e.g。这一个in the Expression blend Gallery将它所附加的任何文本框转换为大写。

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

最简单的方法是:

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的位置):

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

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