【问题标题】:How to turn OFF Alt-Key shortcuts in WPF如何在 WPF 中关闭 Alt 键快捷键
【发布时间】:2010-12-15 21:26:29
【问题描述】:

[.Net 3.5] 我有一个名为 PickList 的 WPF 用户控件。

Picklist 有一个 Grid 和一个名为 TouchGrid 的 UserControl,以及一个名为 BoundFieldProperty 的 DependencyProperty,它是一个字符串。

TouchGrid 有一个称为 Columns 的 ObservableCollection 属性。

TouchGridColumn 是一个 UIElement。

最后,我有一些 XAML,它定义了一个名为 imageList 的 PickList。它将 BoundField 定义为“名称”。

我不知道这是否足以使用;我不会要求你费力地浏览所有这些用户定义的控件。

我使用它的方法是将 imageList 的 DataSource 分配给具有“名称”属性的对象列表,因此我的 PickList 就变成了字符串列表。问题是,如果一个字符串中有一个或多个下划线,第一个下划线被认为是 alt 键快捷方式,因此除非我按下 Alt 键,否则它会从显示中“消失”。 [郑重声明,这是一款触屏应用!]

我想这一定是 UIElement 级别的某种默认设置,尽管我没有任何反应;谁能猜出我会去哪里打败它?

【问题讨论】:

  • 确实有人想知道为什么要向最终用户显示带有下划线的字符串。下划线字符不是我见过的任何自然语言中的字形。作为程序员,我们有时会忘记这一点。
  • 数据是用户自定义的,就是这样;程序员只需要处理它。

标签: wpf .net-3.5


【解决方案1】:

您可以为包含绑定到 name 属性的 TextBlock 的项目创建一个 DataTemplate。 TextBlock 控件不遵守 Alt-Key 快捷方式标识,应以存储方式显示您的文本。

【讨论】:

    【解决方案2】:

    Microsoft MVP 表示此功能在 WPF 中不是可选的。首选的解决方案是将下划线加倍。我向列表中的类型添加了一个只读的 DisplayName 属性,并将其设置为 BoundField,它是 Name。 DisplayName "get" 看起来像这样:

    return new Regex( "_" ).Replace( Name, "__" );
    

    但是,我并不总是能够更改底层对象,所以在另一个地方,我通过这样设置 DataSource 得到了相同的结果:

    imageList.DataSource = WorkOrderImages.Select( w => new
    {
        w,
        DisplayName = ( new Regex( "_" ).Replace( w.Name, "__" ) )
    } );
    

    【讨论】:

      猜你喜欢
      • 2013-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-20
      • 2013-02-21
      • 2023-03-12
      • 1970-01-01
      • 2015-08-05
      相关资源
      最近更新 更多