2010-12-15 25 views
0

[.Net 3.5]我有一個名爲PickList的WPF UserControl。如何關閉WPF中的Alt-Key快捷鍵

Picklist有一個名爲TouchGrid的UserControl和名爲BoundFieldProperty的DependencyProperty,它是一個字符串。

TouchGrid有一個名爲Columns的ObservableCollection屬性。

TouchGridColumn是一個UIElement。

最後,我有一些XAML定義了一個名爲imageList的PickList。它將BoundField定義爲「Name」。

我不知道這是否足以應付;我不會要求你通過所有這些用戶定義的控件。

我使用這種方式是將imageList的DataSource分配給具有「Name」屬性的對象列表,因此我的PickList將成爲一個字符串列表。問題是,如果一個字符串中有一個或多個下劃線,第一個被認爲是一個alt鍵快捷鍵,所以它從顯示屏上「消失」,除非我點擊我的Alt鍵。 [記錄,這是一個觸摸屏應用程序!]

我想這一定是在UIElement級別的某種默認,雖然沒有東西跳出來,任何人都可以猜到我可以去擊敗這個嗎?

+0

人們不知道爲什麼你有下劃線的字符串顯示給最終用戶。下劃線字符不是我見過的任何自然語言中的字形。我們作爲程序員有時會忘記這一點。 – Tergiver 2010-12-15 22:30:36

+0

數據是用戶自定義的,它就是這樣;程序員只需要處理它。 – 2010-12-16 14:06:38

回答

0

微軟MVP表示,這個功能在WPF中是不可選的。首選的解決方案是將下劃線加倍。我添加了一個只讀的DisplayName屬性到我的列表中的類型,並將該名稱作爲BoundField。顯示名稱「得到」是這樣的:

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

我不會總是能夠改變底層的對象,然而,在另一個地方,我通過設置數據源這樣相同的結果:

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

您可以爲包含將綁定到name屬性的TextBlock的項目創建DataTemplate。 TextBlock控件不遵循Alt-Key快捷鍵標識,並應按照存儲的方式顯示文本。