上部にテキストボックス、他に2つのコントロール、さらに3つのテキストボックス、下部に2つのトグルスイッチがある1ページのWP8アプリがあります。ページで3つのTelerikRadToggleSwitchを使用し、1つのTelerik RadListPicker(リスト内の3つのアイテム)を使用しています。
コードビハインドでは、テキストボックスにフォーカスが入ると、2つのボタンを持つApplicationBarを作成します。それらのボタンの1つは、フォーカスを次のテキストボックスに移動する[次へ]です。テキストボックスがフォーカスを失うと、アプリケーションバーを非表示にします。
さて、問題。時々、一見完全にランダムに見えますが、ページが上向きに変形せず、SIPの後ろからテキストボックスが見えるようになります。InputScope、BTWはNumberです。任意のテキストボックスをタップできますが、SIPが表示されると上向きに変換される場合と、表示されない場合があります。テキストボックスを前後にタップするだけでも、ときどき機能しなくなることがあります。
関連するコードビハインドは次のとおりです。
void onSettingsLoaded(object sender, RoutedEventArgs e)
{
ApplicationBar = new ApplicationBar();
ApplicationBar.IsVisible = false;
}
private void onTextGotFocus(object sender, System.Windows.RoutedEventArgs e)
{
CreateTxtAppBar();
tb = sender as TextBox;
tb.SelectAll();
}
private void CreateTxtAppBar()
{
ApplicationBar.Buttons.Clear();
ApplicationBar.MenuItems.Clear();
ApplicationBar.IsVisible = true;
ApplicationBarIconButton btnNext = new ApplicationBarIconButton(new Uri("/Toolkit.Content/next.png", UriKind.Relative));
ApplicationBarIconButton btnOK = new ApplicationBarIconButton(new Uri("/Toolkit.Content/appbar.check.png", UriKind.Relative));
btnOK.Text = LStrings.OK;
btnNext.Text = LStrings.Next;
ApplicationBar.Buttons.Add(btnNext);
ApplicationBar.Buttons.Add(btnOK);
btnNext.Click += btnNext_Click;
btnOK.Click += onBtnOKClick;
}
void btnNext_Click(object sender, EventArgs e)
{
switch(tb.Name)
{
case "tb1":
this.Focus();
tb2.Focus();
break;
case "tb2":
tb3.Focus();
break;
case "tb3":
tb4.Focus();
break;
default:
tb1.Focus();
break;
}
}
private void onTextLostFocus(object sender, System.Windows.RoutedEventArgs e)
{
ApplicationBar.IsVisible = false;
ApplicationBar.Buttons.Clear();
ApplicationBar.MenuItems.Clear();
}
ご覧のとおり、フォーカスの変更が必要な場所にthis.Focus()を貼り付けて機能させようとしましたが、それではうまくいきません。テキストボックスをタップしても変換が行われず、キーボードがフォーカスを受け取ったばかりのテキストボックスを非表示にする場合があります。アクションに関係する他のコントロールはありません。
なぜこれが起こっているのか誰かが知っていますか?私はWP7でこの動作を見たことがないので、幸運だったか、(おそらく、この正確な問題を持つ他の投稿を見つけることができないため)WP8に新しい問題があります。または、Telerikを使用するのはこれが初めてなので、Telerikである可能性がありますが、Telerikコントロールからアクセスせずにテキストボックスをタップして問題を再現できるため、強気ではありません。
重要な場合に備えて、テキストボックスの1つからのマークアップを次に示します。それらはすべて本質的に同じです:
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition
Width="2*" />
<ColumnDefinition
Width="1*" />
</Grid.ColumnDefinitions>
<TextBlock
Grid.Column="0"
Text="{Binding Strings.Age,
Source={StaticResource LocalStrings}}"
Style="{Binding Source={StaticResource TBStyle}}" />
<TextBox
Name="tb2"
Grid.Column="1"
Style="{StaticResource TxtStyle}"
GotFocus="onTextGotFocus"
LostFocus="onTextLostFocus"
Text="{Binding Age,
Source={StaticResource Settings},
Mode=TwoWay}" />
</Grid>
これはすべてスタックパネル内にあり、スタックパネルはスクロールビューア内にあります。
お時間をいただきありがとうございます-どんな助けでも大歓迎です。