如何强制键盘不重叠堆栈面板

时间:2013-04-13 14:07:32

标签: windows-phone-8

我是WP开发的新手,并试图亲自动手。

如果您查看钱包图钉屏幕,焦点会自动设置为文本框,以便用户可以开始输入,键盘也不会隐藏/重叠已完成& 取消按钮。

enter image description here

此外,如果您按回键,这些按钮将保持在底部,如下所示。 enter image description here

我也在尝试使用相同的UI。但是,就我而言

  1. 加载页面后,我无法将焦点设置为文本框。一世 无法在OnNavigatedTo事件中获取文本框的.Focus()方法。哪里 我应该这样做吗?

  2. 当我手动点击文本框输入值时,键盘会重叠 我的stackpanel包含'save'& '取消'按钮如下所示。一世 不希望这种情况发生。相反,屏幕看起来应该像 在第二张图片中显示。

  3. enter image description here

    以下是我试过的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>
    

2 个答案:

答案 0 :(得分:2)

要设置首次导航的焦点,您显然必须在Loaded事件处理程序中设置它。

对于后退导航(从应用程序切换时开始),OnNavigatedTo中的那个将按照您的预期触发。

    // 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不允许在应用程序栏中使用矩形按钮,只允许使用图标按钮。

答案 1 :(得分:0)

在OnNavigatedTo方法中,您可以尝试像这样使用Dispatcher:

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

而且,正如所指出的,你不能在appBar中使用矩形按钮,但你可以使用标准按钮(例如链接按钮)。