【问题标题】:Toggle buttons contents when single button clicked单击单个按钮时切换按钮内容
【发布时间】:2015-01-21 18:24:17
【问题描述】:

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

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

我需要帮助才能继续进行项目。如果您有不同的有效方法,请举个小例子给我建议。任何帮助将不胜感激。

【问题讨论】:

  • 请提供更多上下文?什么是single toggle button solution,为什么不适合您的情况?
  • @kennyzx 单切换按钮,如开/关按钮。但是我需要当有人点击 Shift 按钮时,其他按钮的字符会改变,就像我们点击键盘上的 shift 按钮时,键字符必须改变。就像英文键盘键变成大写字母一样。
  • 好的,我需要进一步明确您的要求:用户按下此shift key 后,所有字符都应切换到其他键,例如Caps Lock 将所有字符转换为大写,直到用户再次按下shift key(在Caps Lock 类比中转换为小写),对吗?
  • 是的,没错,按钮上的字符也应该在视觉上进行更改。就我而言,乌尔都语包含 36 个字符。我在 shift 键按下时实现了 26 个非 shift 字符和其他 10 个类似且不太有用的字符。

标签: c# wpf xaml windows-phone-8 keyboard


【解决方案1】:

简单的方法

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

绑定方式

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

而这一次你只需要定义一个键盘。并且你需要将按键的 UI 和 Command(按键时的执行逻辑)绑定到这个 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多