2010-12-15 7 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가 문자열 목록이되도록하는 것입니다. 문제는 문자열에 밑줄이 하나 이상있는 경우 첫 번째 키가 Alt 키 바로 가기로 간주되므로 Alt 키를 누르지 않으면 디스플레이에서 "사라집니다"라는 것입니다. [기록을 위해, 이것은 터치 스크린 응용 프로그램입니다!]

아무 것도 나에게 뛰어 넘지는 않지만 UIElement 레벨에서 어떤 종류의 기본값이어야합니다. 아무도 내가 이길 수있는 곳을 추측 할 수 있습니까?

+0

최종 사용자에게 표시 할 밑줄이있는 문자열이 왜 있는지 궁금합니다. 밑줄 문자는 내가 본 적이있는 자연 언어의 글리프가 아닙니다. 프로그래머는 때때로 이것을 잊어 버립니다. – Tergiver

+0

데이터는 사용자 정의 된 데이터입니다. 프로그래머는 그것을 처리해야합니다. –

답변

0

Microsoft MVP에 따르면이 기능은 WPF에서는 선택 사항이 아닙니다. 기본 솔루션은 밑줄을 두 배로하는 것입니다. 내 목록의 유형에 읽기 전용 DisplayName 속성을 추가하고 이름이 BoundField가되도록했습니다. "GET"표시 이름은 다음과 같습니다

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

난 항상 다른 장소에서, 그래서 나는이 같은 데이터 소스를 설정하여 같은 결과를 얻었다 그러나 기본 개체를 변경할 수 없습니다 :

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

name 속성에 바인딩 할 TextBlock을 포함하는 항목에 대해 DataTemplate을 만들 수 있습니다. TextBlock 컨트롤은 Alt 키 바로 가기를 식별하지 않으며 텍스트가 저장된 방식으로 표시해야합니다.

관련 문제