禁用专注于文本框的Windows手机键盘

时间:2014-01-06 08:53:31

标签: windows-phone-8

我是Windows Phone的新手。

在我的应用程序中,我有一个文本框,其中光标将首先连续闪烁输入。我有一个自定义拨号盘来接收用户的输入。所以我必须禁用Windows Phone键盘。

在线搜索后,大多数解决方案都是基于从文本框中删除焦点来隐藏键盘。

在我的情况下,它没有发生,因为键盘弹出并立即隐藏。

任何帮助都将受到高度赞赏。

另一件事:我还需要光标在文本框中闪烁。

2 个答案:

答案 0 :(得分:0)

这可以帮助您,创建文本框的GotFocus事件。

GotFocus="input_GotFocus"
private void input_GotFocus(object sender, RoutedEventArgs e)
{
this.Focus();
}

答案 1 :(得分:0)

一种解决方法可能是根本不使用TextBox。相反,您可以使用简单的TextBlock并点击TextBlock,打开自定义键盘。您可以切换键盘的可见性以隐藏/取消隐藏它。按键盘上的键,更新TextBlock的文本。

编辑:为此添加示例代码(也使用游标实现)

我的自定义TextBox实现的Xaml:

<Border x:Name="brdTextBox" Background="White" BorderBrush="Blue" HorizontalAlignment="Stretch" Height="100"
                Margin="10">
                <StackPanel Orientation="Horizontal">
                    <TextBlock x:Name="txtEnterText" FontSize="28" Foreground="Black" Margin="0"></TextBlock>
                    <TextBlock x:Name="txtCursor" FontSize="28" Foreground="Black" Text="|" Margin="0"></TextBlock>
                </StackPanel>
            </Border>

后面的示例代码,它使用计时器来控制光标的刻度:

Timer timer = new Timer((obj) => 
        {
            Dispatcher pageDispatcher = obj as Dispatcher;

            pageDispatcher.BeginInvoke(() => 
            {
                if (txtCursor.Text == "|")
                {
                    txtCursor.Text = "";
                }
                else
                {
                    txtCursor.Text = "|";
                }
            });

        }, this.Dispatcher, 1000, 1000);

在此之后,您可以在边框点击时调出键盘,并在键盘上的键事件中填写文本块。您可以调整计时器持续时间和间隔,以实现与实际光标的完全相似。

希望它有所帮助。