我是WP开发的新手,并试图亲自动手。
如果您查看钱包图钉屏幕,焦点会自动设置为文本框,以便用户可以开始输入,键盘也不会隐藏/重叠已完成& 取消按钮。
此外,如果您按回键,这些按钮将保持在底部,如下所示。
我也在尝试使用相同的UI。但是,就我而言
加载页面后,我无法将焦点设置为文本框。一世 无法在OnNavigatedTo事件中获取文本框的.Focus()方法。哪里 我应该这样做吗?
当我手动点击文本框输入值时,键盘会重叠 我的stackpanel包含'save'& '取消'按钮如下所示。一世 不希望这种情况发生。相反,屏幕看起来应该像 在第二张图片中显示。
以下是我试过的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>
答案 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中使用矩形按钮,但你可以使用标准按钮(例如链接按钮)。