我需要在 Silverlight 4 应用程序的 AutoCompleteBox 中强制输入大写字母。
在 TextBox 中,可以通过替换 KeyDown 事件上的 Text 属性来完成,例如:
control.Text += enteredChar;
control.Select(control.Text.Length, 0); //To maintain caret position
但是 AutoCompleteBox 不提供文本选择功能,而且我找不到将插入符移动到字符串末尾的方法。
您需要更改 AutoCompleteBox 模板并将 UpperCaseBehavior 添加到以下文本框中:
<TextBox x:Name="Text" ...>
<i:Interaction.Behaviors>
<behaviors:UpperCaseBehavior/>
</i:Interaction.Behaviors>
</TextBox>
其中大写行为是:
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();
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)