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

时间:2014-07-31 14:34:38

标签: wpf xaml textbox windows-runtime uppercase

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

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

我的代码:

KeyUp:

String str = "hello";
str = str.ToUpper();
str.Select(str.Count(), 0);

KeyDown:

bool bModify = true;

我的XAML代码:

<TextBox Name="Name" KeyUp="KeyUp" FontSize="20" Margin="15" Grid.Column="1" Grid.Row="0" VerticalAlignment="Stretch" HorizontalAlignment="Stretch" KeyDown="KeyDown"/>

1 个答案:

答案 0 :(得分:5)

您可以按原样保留TextBox,但如果不在焦点位置 - 请将其隐藏并显示TextBlock,而不是使用相同的文字,但设置Typography.Capitals="SmallCaps"

否则 - 这可能有效:

<TextBox
    x:Name="tb"
    Width="500"
    VerticalAlignment="Center"
    HorizontalAlignment="Center"
    KeyDown="OnKeyDown"
    TextChanged="OnTextChanged"/>

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