2016-11-13 5 views
0

InputPaneの動作を手動で制御して、自動的に表示または非表示にしないようにします。私はその映像のトップを入れて、私のページでUWP - InputPaneが自動的に表示されたり隠れたりするのを防ぐ方法

enter image description here

、私はユーザーとしてInputPaneショーにしたいページに移動し、彼/彼女が指定したボタンをクリックするまで表示続け、ユーザーがどこかをクリックした場合に隠れてからそれを防ぎますそれ以外はページ内にあります。

また、ユーザーがTextBoxをクリックしてもInputPaneを非表示にしたいと考えています。

私は既にTryShow()とTryHide()があることを知っていますが、自動表示と非表示を防ぐことはできません。

+0

私の知る限りでは、デフォルトの隠蔽の動作を変更することはできません。 –

+0

@ ElvisXia-MSFTリプレイをありがとう。 – TheSETJ

+0

@ jerrynixonこれについて何かお勧めしますか? – TheSETJ

答えて

0

これを簡単に制御するには、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); 
      } 
     } 
    } 
} 
+0

私はあなたのコードを実行し、TextBoxはタッチとクリックの両方に焦点を当てています。 TextBlockを使用する場合は、そのために偽のカーソルを実装する必要があります。 – TheSETJ

関連する問題