2

我是 WP 开发的新手,正在尝试动手操作。

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

在此处输入图像描述

此外,如果您按回键,这些按钮将保留在底部,如下所示。 在此处输入图像描述

我也在尝试拥有相同类型的用户界面。但是,就我而言

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

  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将按您的预期触发。

    // 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 回答