c# - 绑定(bind)到 Caps Lock

标签 c# wpf

我正在 WPF 中构建登录屏幕。我正在尝试弄清楚如何将我的部分代码绑定(bind)为仅在大写锁定键打开时可见。

<StackPanel Grid.Row="3" Grid.ColumnSpan="2" Grid.Column="1" Orientation="Horizontal">
        <Image Source="../../../Resources/Icons/109_AllAnnotations_Warning_16x16_72.png" Height="16" Width="16"/>
        <Label>Caps lock is on</Label>
</StackPanel>

我更喜欢仅使用 xaml 绑定(bind)的解决方案。

最佳答案

我们在登录表单中使用以下方法在密码框获得焦点时显示“大写锁定警告”。

    private void PasswordBox_PreviewKeyDown(object sender, KeyEventArgs e)
    {
        UpdateCapsLockWarning(e.KeyboardDevice);
    }

    private void PasswordBox_GotKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
    {
        UpdateCapsLockWarning(e.KeyboardDevice);
    }

    private void PasswordBox_LostKeyboardFocus(object sender, KeyboardFocusChangedEventArgs e)
    {
        CapsLockWarning.Visibility = Visibility.Hidden;
    }

    private void UpdateCapsLockWarning(KeyboardDevice keyboard)
    {
        CapsLockWarning.Visibility = keyboard.IsKeyToggled(Key.CapsLock) ? Visibility.Visible : Visibility.Hidden;
    }

虽然这不是您正在寻找的仅限绑定(bind)的答案。

关于c# - 绑定(bind)到 Caps Lock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7119315/

相关文章:

适用于 Windows 8 的 WPF 性能监视器

c# - 使用 css 从母版页覆盖导航

c# - 执行 HttpWebRequest 一段时间后,结果开始超时

c# - C#中的继承问题

c# - 使用 C# 中的 VS2008 解决方案使用 Axis 生成的 Web 服务

wpf - 使用WinDbg分析WPF应用程序中OutOfMemoryException的根本原因

wpf - 用户控件中同一 ViewModel 的两个 View

c# - 无法反序列化当前的 JSON 数组

c# - WPF UI 在事件触发时挂起

.net - 选择正确的 .NET 架构。 WCF? WPF/表单、ASP.NET (MVC)?