2012-02-18 132 views
0

我有一个弹出窗口,在MainPage上打开几个文本框。当您将注意力集中在较低的文本框时,键盘会将其遮挡住。通常文本框滑入视图。我不知道为什么这里没有发生。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> 

,这里是打开它的代码:从UX看来,我会大力推荐反对任何有部分弹出/覆盖有

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

超过1或2纽扣。这只是在WP7中没有完成。如果你有一个表格,你希望人们填写它,把它移到它自己的页面。通过让用户导航到该页面,或者通过在当前页面之前引入一个新的暂时页面(无法导航回)。

您将遇到更多问题,而不仅仅是屏幕键盘中的表单叠加。您需要将AppBar更改为具有用于任何数据输入的“V”和“X”按钮,您需要管理焦点不会滑入覆盖/弹出窗口中,您需要确保“后退“按钮关闭弹出窗口等。

IMO最好的方法是一个简单而一致的用户体验。

+0

我明白你的观点。但导航到另一个页面,以改变一个对象的名称和描述看起来像矫枉过正。我已经处理了所有其他条件。如果我导航到另一个页面,那么我不得不担心将需要的对象和值传递给该页面,再加上当我回来时,我必须确保显示正确的信息。也许这是我唯一的选择,但似乎有点荒谬。 – prak 2012-02-18 23:39:53

+0

这就是People Hub为重命名联系人所做的事,办公室就是这样做的,这就是其他所有事情所做的。如果您是开发人员,请不要在提供适当UX用户注意的情况下在Metro中“创新”。除非您已将您的意见置于地铁设计语言原则之中,否则应争取与其他应用程序和操作系统保持一致。用户会因为未能设计Metroesque应用程序而降低您的应用程序。只是我的0.02美元。 – JustinAngel 2012-02-19 00:11:18

+0

我已经通过了地铁指导方针,而且我所做的与人群中心和其他应用程序所做的不同。我不是“创新”任何我使用的内置控制器。不相信我?这里是来自指南的剪辑“对于临时UI,例如登录屏幕,您可以使用Silverlight Popup控件...”http://msdn.microsoft.com/en-us/library/hh202911%28v=vs .92%29.aspx ...无论如何,我能够通过在xaml中创建而不是在后面的代码来使键盘正常工作。 – prak 2012-02-19 03:00:26