单击单个按钮时切换按钮内容

本文关键字:按钮 单个 单击 | 更新日期: 2023-09-27 18:31:34

我正在为乌尔都语开发Windows Phone键盘项目。我在 XAML 中创建自定义键盘布局,并为非 shift 键添加了字符并且运行良好。

但现在我被困在班次关键功能上。例如,当用户单击shift键时,应切换其他键的字符;就像在英文键盘中一样。搜索后,我只得到了一个切换按钮解决方案,这对我来说还不够,因为我的情况不同。

我需要帮助才能继续项目。如果您有不同的有效方法,请用很少的例子建议我。任何帮助将不胜感激。

单击单个按钮时切换按钮内容

简单的方法

简单的方法是制作 2 个布局相同的键盘,一个用于显示普通字符,另一个用于显示"移动字符"。将一个键盘堆叠在另一个键盘上,并根据shift button的状态切换键盘的可见性,您可以在shift buttonCheckedUnchecked事件处理程序中执行此操作(将shift按钮声明为ToggleButton)。

绑定方式

如果使用 MVVM 模式,则可以将 shift 键状态绑定到视图模型中的Boolean property,例如 ShiftPress ,以便在切换 shift 键时,ShiftPress会自动更新。

而这次你只需要定义一个键盘。并且需要将键的 UI 和命令(按下键时的执行逻辑)绑定到此ShiftPress属性。

你最终得到一个这样的键盘(这不是工作代码,只是说明如何绑定键的 UI 和命令以查看模型属性)。

<ItemsControl x:Name="myKeyboard" ItemsSource="{Binding Characters}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>
            <Button Content="{Binding Char, Converter={StaticResource myConverter}, 
                ConverterParameter={Binding ShiftPress, RelativeResource...}}", 
                Command="{Binding KeyPressCommand}"
                CommandParameter="{Binding Char}" />
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>