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;
}
}
내가 당신이 원하는 무슨 생각을 정확히 얻을 아래에 정확히이 코드를 사용하는 경우 즉, 정확히
IsDropDownOpen 속성에 대한 링크 : http://msdn.microsoft.com/en-us/library/system.windows.controls.combobox.isdropdownopen.aspx – Oosterman
이 http : // stackoverflow를 살펴보십시오. com/questions/1554630/c-combobox-gotfocus – MaRuf
@Marco : 그래,하지만 내 응용 프로그램에 대한 수정 사항을 얻을 수 없습니다. 요구 사항은 드롭 다운 목록의 동작과 밀접한 관련이 있습니다. ... – Sudh