これを簡単に制御するには、TextBox
のフォーカスを制御します。 TextBoxのIsTabStop
をfalseに設定すると、フォーカスが失われ、SIPが表示されなくなります。すでにフォーカスがある場合は、それを移動する必要があります。 SIPを表示する場合は、TextBoxをフォーカスします。パフォーマンス上の理由から、またユーザーの混乱を防ぐため、コントロールを編集できないようにする場合は、TextBox
の代わりにTextBlock
を使用するとよいでしょう。
XAML
<Page
x:Class="App18.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App18"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid
Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition
Height="Auto" />
</Grid.RowDefinitions>
<TextBox
x:Name="myTextBox"
IsTabStop="False"
AcceptsReturn="True"
VerticalAlignment="Stretch"
TextChanged="MyTextBox_OnTextChanged"/>
<Button
x:Name="myButton"
Grid.Row="1"
Click="ButtonBase_OnClick">Edit</Button>
</Grid>
</Page>
C#
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
namespace App18
{
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
}
private void ButtonBase_OnClick(object sender, RoutedEventArgs e)
{
myTextBox.IsTabStop = true;
myTextBox.Focus(FocusState.Programmatic);
}
private void MyTextBox_OnTextChanged(object sender, TextChangedEventArgs e)
{
if (myTextBox.Text.ToLower().Contains("done"))
{
myTextBox.IsTabStop = false;
myButton.Focus(FocusState.Programmatic);
}
}
}
}
私の知る限りでは、デフォルトの隠蔽の動作を変更することはできません。 –
@ ElvisXia-MSFTリプレイをありがとう。 – TheSETJ
@ jerrynixonこれについて何かお勧めしますか? – TheSETJ