c# - Silverlight AutoCompleteBox 大写输入

标签 c# silverlight

我需要在 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/

相关文章:

silverlight - Silverlight 4 中缺少 System.Windows.Interactivity - mvvm light 教程

c# - Silverlight打印抗锯齿

c# - 当有复合主键并且只想使用一个时使用 db.Find

c# - 更新与替换的MongoDB含义

c# - 你调用的对象是空的。尝试将 XML 放入列表

javascript - 在MVC 4.0母版页中加载jquery

c# - 使用自定义 ItemsSource 刷新 ListBox 的最简单方法?

c# - 为 ASP.NET 4 和 ASP.NET Core 1.0 创建一个 Nuget 包

silverlight - Facebook crossdomain.xml silverlight 错误

c# - 制作通用类 IEnumerable