2010-12-15 5 views
0

[.Net 3.5]私はPickListという名前のWPF UserControlを持っています。WPFのAltキーショートカットをオフにする方法

Picklistには、TouchGridというUserControlとBoundFieldPropertyという文字列であるDependencyPropertyというグリッドがあります。

TouchGridには、ColumnsというObservableCollectionプロパティがあります。

TouchGridColumnはUIElementです。

最後に、imageListというPickListを定義するXAMLがいくつかあります。これはBoundFieldを "Name"として定義します。

これで十分かどうかわかりません。これらのユーザー定義のすべてのコントロールを実行するように求めません。

私がこれを使用する方法は、ImageListのDataSourceを "Name"プロパティを持つオブジェクトのリストに割り当てて、PickListが文字列のリストになるようにすることです。問題は、文字列に1つ以上のアンダースコアがある場合、最初の文字はAltキーのショートカットと見なされるため、Altキーを押していなければディスプレイからは消えます。 [記録のために、これはタッチスクリーンアプリです!]

私はUIElementレベルで何らかの種類のデフォルトでなければならないと思いますが、私には何も飛びません。誰がこれを倒すために行くかもしれないと思いますか?

+0

エンドユーザーに表示しているアンダースコアの文字列がある理由が不思議です。アンダースコアは、これまでに見た自然言語のグリフではありません。私たちはプログラマとして、これを忘れることがあります。 – Tergiver

+0

データはユーザー定義のデータです。プログラマはそれに対処しなければなりません。 –

答えて

0

Microsoft MVPによると、この機能はWPFではオプションではありません。推奨される解決策は、アンダースコアを2倍にすることです。私は読み取り専用のDisplayNameプロパティを自分のリストの型に追加し、名前であったBoundFieldを作成しました。 DisplayNameには、次のようになります「GET」:

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

別の場所で、私はこのようなデータソースを設定することで同じ結果を得たので、私はいつも、しかし、基礎となるオブジェクトを変更することはできません。

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

名前プロパティにバインドするTextBlockを含むアイテムのDataTemplateを作成できます。 TextBlockコントロールはAltキーのショートカットを識別せず、テキストの保存方法を表示する必要があります。

関連する問題