将文本框以大写形式放在XAML for Windows 8.1中

Mou*_*awi 0 wpf xaml textbox uppercase windows-runtime

页面中的一个文本框.我不能使用转换器(它没有工作),我不能使用CharacterCasing property 当我写文本时如何把大写我的文本框?

我使用Windows运行时为Windows 8.1开发,所以我在互联网上找不到很多帮助

我的代码:

KeyUp:

String str = "hello";
str = str.ToUpper();
str.Select(str.Count(), 0);
Run Code Online (Sandbox Code Playgroud)

KeyDown:

bool bModify = true;
Run Code Online (Sandbox Code Playgroud)

我的XAML代码:

<TextBox Name="Name" KeyUp="KeyUp" FontSize="20" Margin="15" Grid.Column="1" Grid.Row="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" KeyDown="KeyDown"/>
Run Code Online (Sandbox Code Playgroud)

Fil*_*kun 5

您可以保持TextBox原样,但是当不在焦点时 - 隐藏它并TextBlock使用相同的文本显示,但是使用类似的Typography.Capitals="SmallCaps"设置.

否则 - 这可能有效:

<TextBox
    x:Name="tb"
    Width="500"
    VerticalAlignment="Center"
    HorizontalAlignment="Center"
    KeyDown="OnKeyDown"
    TextChanged="OnTextChanged"/>
Run Code Online (Sandbox Code Playgroud)

C#

private void OnKeyDown(object sender, KeyRoutedEventArgs e)
{
    DoTheAllCapsThing();
}

private void OnTextChanged(object sender, TextChangedEventArgs e)
{
    DoTheAllCapsThing();
}

private void DoTheAllCapsThing()
{
    var start = tb.SelectionStart;
    var length = tb.SelectionLength;
    tb.Text = tb.Text.ToUpper();
    tb.Select(start, length);
}
Run Code Online (Sandbox Code Playgroud)