2010-11-12 93 views
2

如何使其在Silverlight中將字母輸入到文本框中時將其更改爲所有大寫字母?同時還會觸發所有相同的事件,如按鍵。如何自動限制文本框

回答

1

有沒有簡單的方法來做到這一點,除了使用嵌入的全部大寫字體。所有其他方式干擾文本框的工作方式。

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(); 
} 

但是,如果數據綁定到模型/實體,我會在綁定的對象屬性設置器/ OnPropertyChanged,OnTextChanged或實體中的任何對象上調用ToUpper()

1

如果你想避免後面的代碼或自定義控件(最好),這種功能可以通過行爲來實現。

例如這一個in the Expression blend Gallery將它附加到的任何文本框轉換爲大寫。

然後,只需在Blend中拖放或在VS2010中手動添加觸發器即可。