옆 검증이 문제를 해결할 수 있습니다. 그러나 WPF ComboBox 포커스의 또 다른 문제 - 특정 동작 : 항목을 사용하여 드롭 다운 목록을 열면 ComboBox에서 포커스 및 항목이 손실됩니다. 일부 항목을 선택하면 항목이 포커스를 잃고 ComboBox가 돌아옵니다. 드롭 다운 목록은 다른 컨트롤과 같습니다. 당신은 간단한 코드에 의해이를 볼 수 있습니다
private void myComboBox_GotFocus(object sender, RoutedEventArgs e)
{
if (e.OriginalSource.GetType() != typeof(ComboBoxItem))
{
Trace.WriteLine("Got " + DateTime.Now);
}
}
private void myComboBox_LostFocus(object sender, RoutedEventArgs e)
{
if (e.OriginalSource.GetType() != typeof(ComboBoxItem))
{
Trace.WriteLine("Lost " + DateTime.Now);
}
}
그래서 어쨌든이어야 개의 포커스 이벤트를 얻을 것이다 : 당신이 콤보 상자를 선택하고 그것에서 무언가를 선택할 때 (포커스가 콤보 상자로 돌아갑니다) 때.
항목을 선택한 후 반환 된 포커스를 필터링하려면 일부 field-flag와 함께 DropDownOpened
/DropDownClosed
이벤트를 사용해보십시오.
그래서 점점 초점의 1 이벤트와 최종 코드 : 당신이 실제로 응용 프로그램에 대한 더 필요한이 예에서
private bool returnedFocus = false;
private void myComboBox_GotFocus(object sender, RoutedEventArgs e)
{
if (e.OriginalSource.GetType() != typeof(ComboBoxItem) && !returnedFocus)
{
//Your code.
}
}
private void myComboBox_LostFocus(object sender, RoutedEventArgs e)
{
if (e.OriginalSource.GetType() != typeof(ComboBoxItem))
{
ComboBox cb = (ComboBox)sender;
returnedFocus = cb.IsDropDownOpen;
}
}
선택합니다.
좋은 정보를 기능을 추가 아래의 코드에서
는 snipplet. http://stackoverflow.com/questions/830510/issue-with-wpf-focus [link] (http://stackoverflow.com/questions/830510/issue-with-wpf-focus) – Mikeb