은 물론 더 "IsFocused"속성이없는, 그러나 당신이 사용할 수있는 두 개 이상의 MVVM 친화적 인 방법이 있습니다 :
- 를 사용하여 혼합 SDK의 확장 트리거/액션 세트. 특히
EventTrigger
을 단추의 "클릭"이벤트에 사용하고 CallMethodAction
을 사용하여 대상 요소에서 "SetFocus"를 호출하십시오.
- 첨부 된 속성과 함께
Behavior
을 사용하여 대상에 "포커스"를 호출하십시오. 처음 들어
, 당신은 이런 식으로 뭔가를해야합니다 :
<Button Content="Add"
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
xmlns:ei="http://schemas.microsoft.com/expression/2010/interactions">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<i:InvokeCommandAction Command="{Binding AddCommand}" />
<ei:CallMethodAction TargetObject="{Binding ElementName=NameOfElementToFocus}"
MethodName="Focus" />
</i:EventTrigger>
</i:Interaction.Triggers>
</Button>
<TextBox x:Name="NameOfElementToFocus" />
(또는 대신 CallMethodAction
를 사용, 당신은 또한 간단한 "focus" 조치를 사용할 수 있습니다.)
두 번째 방법에 대한 코드는 게시하지 않습니다. 일반적으로 사용할 수있는 일반적인 사례이므로 검색을 통해 앰플 (for example). 기본 아이디어는 Behavior
클래스를 만들고 부울 속성 인 "IsFocused"를 추가하는 것입니다. "변경"핸들러에서 AttachedObject에 "Focus"를 호출합니다. 그런 다음 뷰 모델의 속성에 재산 MVVM 스타일을 결합 할 수있다, 이런 식으로 뭔가 :
<TextBox x:Name="NameOfElementToFocus" my:FocusBehavior.IsFocused="{Binding IsTextBoxFocused}" />
오 McGarnagle, 나는 당신에게 맥주 선생님을 구매해야합니다 어느 날, 나는 그렇게 간단 callmethodaction 노선의 결코 생각하지 않았다, 건배. –