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