[.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级别的某种默认值,虽然没有任何事情在我身上跳出来;任何人都可以猜到我可能会打败这个吗?
答案 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, "__" ) )
} );