2014-06-19 6 views
-1

에 초점을 관리
내가 두 뷰와 두 ViewModels를 가지고 첫 번째 뷰 모델은 내 ContentControl을, 내 ViewModel에 첫 번째보기의 버튼 중 하나에 따라로드 된 첫 번째보기로 바인더 제본되어
, 초점을 맞추고있다
두 번째 뷰 모델과 같은 몇 가지 내 WPF 응용 프로그램에서 WPF

ContentControl을, 두 번째보기에 따라로드 두 번째보기,
난 뒤로 보여 첫째 뷰 모델 및보기, 내가 집중하고 오래된 버튼을 집중하고 싶어요 ,

에 바인더 제본 할 때 벨로우즈 :

public static IInputElement focusedelement; 
    public UCMainMenu() 
    { 
     InitializeComponent(); 
    } 

    private void UserControl_Loaded(object sender, RoutedEventArgs e) 
    { 
     Keyboard.Focus(focusedelement); 
    } 

    private void UserControl_Unloaded(object sender, RoutedEventArgs e) 
    { 
     focusedelement = Keyboard.FocusedElement; 
    } 

답변

0

이 해당 컨트롤의 UIElement.IsFocused property에 다음 바인딩 데이터를보기 모델에 bool IsFocused 속성을 만들고 :

<Button IsFocused="{Binding IsFocused}" ... /> 

를 그런 다음 당신도 그들 중 하나에 초점을 할 때마다, 단지 trueIsFocused 속성을 설정 당신의 관련 뷰 모델 :

IsFocused = true; 

하는 것으로 이미 true 경우, 당신은 수도 필요에 처음 이것을 작동 시키려면 false으로 설정하고 다시 true으로 설정하십시오.

+0

감사합니다, 당신은 View에서 각 버튼에 대해 Vm에서 IsFocused 속성을 정의하고 싶습니까? 나는 그 중 하나가 포커스를 가지고있는 뷰에 여러 버튼이 있습니다. 뷰 1, 포커스가있는 마지막 버튼이 포커스를 가져야합니다. –

+0

버튼에 IsFocused 속성이 없습니다. –

+0

아니요, 뷰 모델 당 하나의 IsFocused 속성을 만드는 것을 의미합니다. 뷰가로드 될 때 오직 하나의'Button '만이 포커스 될 수 있습니다. 포커스를 얻고 자하는'Button'에이 속성을 설정하고 뷰가로드 될 때마다 속성을'true'로 설정합니다. 두 번째 주석에 대해서는 ['Button' 클래스] (http://msdn.microsoft.com/en-us/library/system.windows.controls.button.aspx) *에는 Isfocused 속성이 있습니다. – Sheridan

관련 문제