我需要在 Silverlight 4 应用程序的 AutoCompleteBox 中强制输入大写字母。
在 TextBox 中,可以通过替换 KeyDown 事件上的 Text 属性来完成,例如:
control.Text += enteredChar;
control.Select(control.Text.Length, 0); //To maintain caret position
但是AutoCompleteBox不提供文本选择功能,而且我没有找到将插入符移动到字符串末尾的方法。
最佳答案
您需要更改 AutoCompleteBox 模板并将 UpperCaseBehavior 添加到其中的 TextBox:
<TextBox x:Name="Text" ...>
<i:Interaction.Behaviors>
<behaviors:UpperCaseBehavior/>
</i:Interaction.Behaviors>
</TextBox>
其中 UpperCaseBehavior 是:
public class UpperCaseBehavior: Behavior<TextBox>
{
protected override void OnAttached()
{
base.OnAttached();
AssociatedObject.TextChanged += AssociatedObject_TextChanged;
}
private void AssociatedObject_TextChanged(object sender, TextChangedEventArgs args)
{
var selectionStart = AssociatedObject.SelectionStart;
var selectionLength = AssociatedObject.SelectionLength;
AssociatedObject.Text = AssociatedObject.Text.ToUpper();
AssociatedObject.SelectionStart = selectionStart;
AssociatedObject.SelectionLength = selectionLength;
}
protected override void OnDetaching()
{
AssociatedObject.TextChanged -= AssociatedObject_TextChanged;
base.OnDetaching();
}
}
关于c# - Silverlight AutoCompleteBox 大写输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6705049/