UWP 앱 (Windows 10)의 TextBox에 사용자가 입력 한 텍스트를 대문자로 만들려합니다. WinForms와 WPF는 모두 CharacterCasing을 사용하여이 작업을 수행하는 간단한 방법을 제공하지만 UWP는 그렇지 않습니다.UWP에서 텍스트 상자를 대문자로 지정하십시오 (Windows 10)
두 가지 방법을 시도했습니다. AlexDrenea에 의해 온라인 예제, 그리고 직접 변환기를 만들었습니다. 두 경우 모두 텍스트 상자에 "test"를 입력하면 텍스트가 뒤죽박죽이됩니다 (예 : "test"는 "TSTE"로 표시됨).
정말 변환기가 작동한다고 생각했습니다. 그것을 향상시키기 위해 할 수있는 일에 대한 어떤 제안이라도 편지를 뒤범벅하지 않습니까?
XAML
<Page
x:Class="MakeUppercaseEx2.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:MakeUppercaseEx2"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Page.Resources>
<local:TextToUppercaseConverter x:Name="MyUppercaseConverter" />
</Page.Resources>
<StackPanel Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<TextBox Name="txtExample2" Margin="10" Text="{Binding ElementName=txtExample2, Path=Text, Converter={StaticResource MyUppercaseConverter}}" />
<Button Name="btnDisplay" Margin="10" Content="Display" Click="btnDisplay_Click"/>
<TextBlock Name="lblStatus" Margin="10" Text="" />
</StackPanel>
</Page>
코드 숨김
using System;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Data;
namespace MakeUppercaseEx2
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private void btnDisplay_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e) {
lblStatus.Text = "You entered: " + txtExample2.Text;
}
}
public class TextToUppercaseConverter : IValueConverter {
public object Convert(object value, Type targetType, object parameter, string language) {
string sTypedValue = System.Convert.ToString(value);
if (string.IsNullOrEmpty(sTypedValue)) {
return "";
}
return sTypedValue.ToUpper();
}
public object ConvertBack(object value, Type targetType, object parameter, string language) {
throw new NotImplementedException();
}
}
}
TextChanging 이벤트를 사용하여 입력 된 텍스트를 가져 와서 대문자 버전을 반환 할 수 있습니다. 이 이벤트를 사용하면 원래의 소문자가 TextChanged와 같이 입력되고 제거되지 않는다는 것을 알 수 있습니다. – jsmyth886
@ jsmyth886 WPF에서는 'CharacterCasing'을 'Upper'로 설정했기 때문에 'TextChanging' 대신'TextChanged'를 명시 적으로 사용했습니다. 당신이 뭔가를 입력하면, 그것은 원래의 입력 된 텍스트를 아래쪽에 표시하지 않고 상단으로 변경합니다. 똑바로 대문자를 표시합니다. 나는 여기에서 같은 것을 반복하고 싶었다. – AVK
@AVK - 코드가 작동하고 대문자로 변경되지만 코드 숨김에서 새 컨트롤에 액세스 할 수 없습니다. 어쩌면 내가 뭔가를 놓치고 있지만 코드 비하인드에서 텍스트 값을 얻으려고하면 (예 : string sWhatWasTyped = txtExample.본문;) 오류가 발생합니다 : 이름 'txtExample2'현재 컨텍스트에서 존재하지 않습니다. – ThePeter