2011-10-01 6 views
2

WPF에서 간단한 UI 문제에 대한 깔끔한 해결책을 찾을 수 없습니다. 콤보 상자에 포커스가있을 때마다 콤보 상자 드롭 다운 목록이 나타나길 원합니다.Combobox의 드롭 다운 목록과 관련된 이상한 문제

private void comboBoxAC_Cat_GotFocus(object sender, RoutedEventArgs e) 
    { 
     comboBoxAC_Cat.IsDropDownOpen = true; 
    } 

을하지만 지금 문제는 드롭 다운 목록이 열리면, 응용 프로그램이 가지 그 안에 갇혀 있다는 것입니다 : 그래서있어 초점 이벤트에서 이것을 썼다. 나는 입력 여부와 상관없이 내가하는 일과 상관없이 드롭 다운 목록에서 나올 수 없습니다. 포커스를 잃거나 다른 이벤트에 등록하려고 시도했지만 아무 것도 작동하지 않는 것 같습니다. 다음은 드롭 다운 목록에 들어가면 쓸모 없게되는 응용 프로그램의 이벤트 처리기 목록입니다.

private void Grid_PreviewKeyDown(object sender, KeyEventArgs e) 
    { 
     var uie = e.OriginalSource as UIElement; 
     if (e.Source is Button) 
      return; 
     if (e.Key == Key.Enter) 
     { 
      e.Handled = true; 
      uie.MoveFocus(
      new TraversalRequrest(
      FocusNavigationDiection.Next)); 
     } 
    } 
    private void comboBoxAC_Cat_LostFocus(object sender, RoutedEventArgs e) 
    { 
     (sender as ComboBox).IsDropDownOpen = false; 

    } 

아무도 도와 주시겠습니까?

기본 요구 사항은 간단합니다. 콤보 박스가 탭이나 마우스를 사용하여 집중되면 드롭 다운 목록이 열리십시오. 그런 다음 사용자는 항목을 선택할 수 있어야하고 드롭 다운 목록에서 항목을 선택하면 닫기 및 초점이 다음 UI 요소로 이동해야합니다.

지금은 달성하기가 어렵습니다 ??? 나는 드롭 다운 내 콤보 때 컨트롤을 열어, 내가

private bool returnedFocus = false; 

    private void myComboBox_GotFocus(object sender, RoutedEventArgs e) 
    { 
     if (e.OriginalSource.GetType() != typeof(ComboBoxItem) && !returnedFocus) 
     { 
      cmb.IsDropDownOpen = true; 
     } 
    } 

    private void myComboBox_LostFocus(object sender, RoutedEventArgs e) 
    { 
     if (e.OriginalSource.GetType() != typeof(ComboBoxItem)) 
     { 
      ComboBox cb = (ComboBox)sender; 
      returnedFocus = cb.IsDropDownOpen; 
     } 
    } 

내가 당신이 원하는 무슨 생각을 정확히 얻을 아래에 정확히이 코드를 사용하는 경우 즉, 정확히

+0

IsDropDownOpen 속성에 대한 링크 : http://msdn.microsoft.com/en-us/library/system.windows.controls.combobox.isdropdownopen.aspx – Oosterman

+0

이 http : // stackoverflow를 살펴보십시오. com/questions/1554630/c-combobox-gotfocus – MaRuf

+0

@Marco : 그래,하지만 내 응용 프로그램에 대한 수정 사항을 얻을 수 없습니다. 요구 사항은 드롭 다운 목록의 동작과 밀접한 관련이 있습니다. ... – Sudh

답변

2

가 이해가 안 콤보 상자의 기능이라고 생각 포커스를 얻고 목록 항목을 선택하면 마우스 클릭이나 클릭으로 포커스가 사라집니다.

원하지 않는가?

+0

감사하지만이 컨트롤은 컨트롤이 포커스를 얻었을 때 드롭 다운을 열지 만 입력을 누르거나 목록 항목을 선택하면 닫히지 않습니다. 나는이 비헤비어를 이해할 수 없습니다. 작성한 코드와 정확히 동일합니다. .. 거기에 내가 조정할 필요가있는 추가 xaml 속성이 있습니까? .. – Sudh

+0

그것은 이상한데, 나는 그 코드를 게시하기 전에 테스트 했었습니다. 이전에 두 개의 컨트롤만으로 새 프로젝트를 열려고 시도했습니다. 하나의 간단한 콤보 상자가 기본 속성을 가지고, 내가 한 일 이니까 – MaRuf

+0

오, 미안하지만 .. 나쁘다 .. 작동 ... 문제는 내가 끼워 넣은 메시지 상자였다. 이제는 완벽하게 작동한다.) – Sudh

관련 문제