如何在WPF中关闭Alt-Key快捷方式

时间:2010-12-15 21:26:30

标签: wpf .net-3.5

[.Net 3.5]我有一个名为PickList的WPF UserControl。

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

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

TouchGridColumn是一个UIElement。

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

我不知道这是否足够合作;我不会要求你浏览所有这些用户定义的控件。

我使用它的方法是将imageList的DataSource分配给具有“Name”属性的对象列表,这样我的PickList就变成了一个字符串列表。问题是如果一个字符串中有一个或多个下划线,第一个被认为是一个alt-key快捷方式,所以它会从显示屏“消失”,除非我点击我的Alt键。 [为了记录,这是一个触摸屏应用程序!]

我想这绝对是UIElement级别的某种默认值,虽然没有任何事情在我身上跳出来;任何人都可以猜到我可能会打败这个吗?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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

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

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

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