【问题标题】:Disabling keyboard of windows phone having focus on Textbox禁用专注于文本框的 Windows Phone 键盘
【发布时间】:2014-01-06 20:13:11
【问题描述】:

我是 Windows Phone 新手。

在我的应用程序中,我有一个文本框,最初光标会不断闪烁以供输入。我有一个自定义拨号盘来接收用户的输入。所以我必须禁用 Windows Phone 键盘。

网上搜索后,大部分的解决方案都是基于从文本框移除焦点来隐藏键盘。

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

任何帮助将不胜感激。

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

【问题讨论】:

  • 能否提供一些代码sn-ps

标签: windows-phone-8


【解决方案1】:

希望这对您有所帮助,为您的文本框创建 GotFocus 事件。

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

【讨论】:

  • 我知道这一点,但在我的情况下它不起作用。这会从文本框中删除焦点,但我需要将焦点用于隐藏键盘的闪烁光标。
【解决方案2】:

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

编辑:为此添加示例代码(也带有光标实现)

Xaml 用于我的自定义 TextBox 实现:

<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);

在此之后,您可能会在点击边框时调出您的小键盘,并在小键盘的按键事件中填充文本块。您可以调整计时器的持续时间和间隔,以达到与实际光标非常相似的效果。

希望对你有帮助。

【讨论】:

  • 文本块不可选择.....因此无法在文本块中闪烁光标或更改光标位置。
猜你喜欢
  • 2013-09-12
  • 1970-01-01
  • 2015-09-10
  • 2017-04-08
  • 2018-09-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-03
相关资源
最近更新 更多