如何最好地将当前视图模型状态传递回视图模型,特别是文本框的焦点状态?
我的要求是根据上下文进行搜索,具体取决于哪个文本框获得焦点,以确定在数据库中搜索哪个字段。
我正在使用MVVM模式,不想在视图中放置任何代码。
为TextBox
创建一个附加属性,该属性是IsFocussed
属性。然后使用双向绑定到您的ViewModel
InvokeCommandAction
: <StackPanel>
<TextBox>
<i:Interaction.Triggers>
<i:EventTrigger EventName="GotFocus">
<i:InvokeCommandAction Command="{Binding YourCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</TextBox>
</StackPanel>
在哪里:
xmlns:i="http://schemas.microsoft.com/expression/2010/interactivity"
我真的没有看到任何在不稍微违反视图-视图模型合同(即,视图模型是视图无关的)的情况下完成这个任务的方法。你可以使用System.Windows.Input
的Keyboard.FocusedElement
,然后获取该元素的数据绑定,在视图模型中的搜索命令中执行你的搜索。