2012-02-18 16 views
0

メインページにいくつかのテキストボックスが表示されたポップアップがあります。今までキーボードの下のテキストボックスに焦点を当てると、キーボードはそれを見えなくしてしまいます。通常、テキストボックスがスライドして表示されます。私はなぜそれがここで起こっていないのか分からない。wp7ポップアップがポップアップでテキストボックスをブロックしています

助けてください!

<UserControl x:Class="Controls.EditControl" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
xmlns:SampleData="clr-namespace:SampleData" 
mc:Ignorable="d" 
FontFamily="{StaticResource PhoneFontFamilyNormal}" 
FontSize="{StaticResource PhoneFontSizeNormal}" 
Foreground="{StaticResource PhoneForegroundBrush}" 
Height="800" Width="480" 
d:DataContext="{d:DesignData ../SampleData/sampleEditPopup.xaml}"> 

<Grid x:Name="LayoutRoot" Background="#FF000000" Opacity="0.995"> 
    <StackPanel Margin="0,20,0,0" Orientation="Horizontal" VerticalAlignment="Top"> 
     <TextBlock TextWrapping="Wrap" Text="Name" HorizontalAlignment="Left" Height="26" Margin="15,10,0,10" Width="110" TextAlignment="Right"/> 
     <TextBox x:Name="tb_name" 
      TextWrapping="Wrap" 
      Width="340" Height="75" 
      Margin="10,13,15,12" 
      InputScope="Text" MaxLength="1000" 
      Text="{Binding Title, Mode=TwoWay}"/> 
    </StackPanel> 
    <StackPanel Orientation="Horizontal" Margin="0,150,0,0" VerticalAlignment="Top"> 
     <TextBlock TextWrapping="Wrap" Text="Description" HorizontalAlignment="Left" Height="26" Margin="15,40,0,10" Width="110" VerticalAlignment="Top" TextAlignment="Right"/> 
     <TextBox x:Name="tb_description" 
      TextWrapping="Wrap" 
      Width="340" Height="254" 
      Margin="10,13,15,12" 
      InputScope="Text" MaxLength="1000" 
      Text="{Binding Description, Mode=TwoWay}"/> 
    </StackPanel> 
</Grid> 

、ここでそれを開くためのコードです:

EditControl ec = new EditControl(); 
ec.Title = cm.Title; 
ec.Description = cm.Description; 

//sets appbar icons for accepting values 
setEditIcons(); 

Popup edit = new Popup() { Child = ec, Tag = this }; 
edit.Closed += new EventHandler(edit_Closed); 
edit.IsOpen = true; 

答えて

0

UXの観点から、私は頻繁に1または2以上のものを持っている任意の部分のポップアップ/オーバーレイを持つに対してお勧めしますボタン。それはWP7で行われていないだけです。あなたが記入してほしいフォームがあれば、それを自分のページに移動してください。ユーザーがそのページにナビゲートするようにするか、または現在のページの前に新しい一時的なページ(ナビゲートすることはできません)を導入します。

フォームオーバーレイを使用したオンスクリーンキーボードだけではなく、さらに多くの問題が発生します。 AppBarを変更してデータ入力用の「V」と「X」ボタンを持たせる必要があります。オーバーレイ/ポップアップの下にフォーカスが戻らないように管理する必要があります。ボタンを押すとポップアップなどが閉じます。

IMO最も簡単な方法は、シンプルで安定したUXです。

+0

私はあなたの要点を理解しています。しかし、オブジェクトの名前と説明を変更するために別のページに移動することは、過剰なもののようです。私は実際にすでに他のすべての条件を処理しています。私が別のページに移動すると、そのページに必要なオブジェクトと値を渡すことについて心配する必要があります。また、私が戻ったときに、正しい情報が表示されていることを確認する必要があります。たぶんそれは私の唯一の選択肢ですが、ばかげているようです。 – prak

+0

これはまさにPeople Hubが連絡先の名前を変更するために行うことです。それはオフィスがしていることです。それが他のすべてのことです。あなたが開発者なら、適切なUXの考慮事項を何も与えずに、Metroの「革新的」を避けてください。メトロデザインの言語原則にあなたの意見を踏まなければ、他のアプリやOSとの一貫性を保つために努力してください。ユーザーは、Metroesqueアプリケーションの設計に失敗したため、アプリケーションを下降させます。ちょうど私の0.02 $。 – JustinAngel

+0

私は地下鉄のガイドラインに従っていますが、私がやっていることは人々のハブや他のアプリが行うこととは異なります。私は、私が組み込まれているコントロールを使用している何かを "革新的"ではない。私を信じていない?ここでガイドラインのクリップがあります。「ログイン画面などの一時的なUIの場合は、Silverlightポップアップコントロールを使用できます...」http://msdn.microsoft.com/en-us/library/hh202911%28v=vs .92%29.aspx ...とにかく、キーボードをコードの代わりにxamlで作成して正しく動作させることができました。 – prak

関連する問題