2

私はWP開発に不慣れで、実践しようとしています。

ウォレット PIN の画面を見ると、ユーザーが入力を開始できるように、フォーカスが自動的にテキスト ボックスに設定されます。また、キーボードは [完了] ボタンと[キャンセル] ボタンを非表示にしたり、オーバーラップしたりしません。

ここに画像の説明を入力

また、戻るキーを押すと、これらのボタンは下の図のように下に残ります。 ここに画像の説明を入力

私も同じ種類のUIを作ろうとしています。ただし、私の場合

  1. ページがロードされるとすぐにテキストボックスにフォーカスを設定できません。OnNavigatedTo イベントでテキストボックスの .Focus() メソッドを取得できません。どこでこれを行う必要がありますか?

  2. テキストボックスを手動でタップして値を入力すると、以下に示すように、「保存」ボタンと「キャンセル」ボタンを含むスタックパネルにキーボードが重なります。私はこれが起こることを望んでいません。代わりに、画面は 2 番目の画像のようになります。

ここに画像の説明を入力

以下は、私が試したXAMLコードです。

<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
    <StackPanel>
        <TextBlock Name="txtLimit" TextWrapping="Wrap" Text="Enter the value" Style="{StaticResource PhoneTextSubtleStyle}"/> 
        <TextBox AcceptsReturn="True" InputScope="Number"  />
    </StackPanel>

    <StackPanel VerticalAlignment="Bottom" HorizontalAlignment="Center" Orientation="Horizontal" >
        <Button Content="save" Width="200" />
        <Button Content="cancel" Width="200"/>
    </StackPanel>
</Grid>
4

2 に答える 2

2

初めてのナビゲーションでフォーカスを設定するには、明らかにLoadedイベント ハンドラーでこれを設定する必要があります。

戻るナビゲーション (アプリケーションが切り替えられたときから) の場合、OnNavigatedTo期待どおりに 1 つが起動します。

    // Constructor
    public MainPage()
    {
        InitializeComponent();
        this.Loaded += (sender, args) => this.textBox.Focus();
    }

    protected override void OnNavigatedTo(NavigationEventArgs e)
    {
        base.OnNavigatedTo(e);
        this.textBox.Focus();
    }

ApplicationBarただし、オンスクリーン キーボードの下に表示するには、ボタンを に追加する必要があります。

ただし、SDK では、アプリケーション バーで長方形のボタンを使用することはできず、アイコン ボタンのみを使用できます。

于 2013-04-13T14:33:15.690 に答える
0

In the OnNavigatedTo method, can you try to use the Dispatcher like this :

Dispatcher.BeginInvoke(()=>{
    this.textBox.Focus();
  });

And, as pointed out, you can NOT have rectangular buttons in the appBar but you can use standard one (like the linked in button for example).

于 2013-04-13T16:22:55.020 に答える