我有这样的情况,我有两个使用MVVM Pattern开发的WPF表单.2nd表单将从第一个开始(form1将在后端,直到form2关闭),关闭第二个表单使第一个表单处于活动状态。
现在我想在form1上创建一个文本框,并在其上设置默认焦点。我能够用FocusManager做它并且它的工作正常但是当我从form2进入form1时,同样不能正常工作。此外,在此期间我必须将焦点设置在默认文本框上,同时我还需要选择其上的所有文本。我无法理解如何使用viewmodel执行此操作。
任何建议对我都有很大的帮助。
此致
克里希纳
答案 0 :(得分:2)
您可以使用FocusManager.FocusedElement
Attached Property
<Grid FocusManager.FocusedElement="{Binding ElementName=SomeTextBox}">
<TextBox Name="SomeTextBox" Text="{Binding SomeProperty}" />
</Grid>
每次加载视图/ TextBox
时,此应选择UserControl
。
至于如何从视图模型中选择文本......在使用MVVM时,解决方案与处理任何事件的解决方案相同。将它包裹在附属物中。请注意,处理视图模型中的所有事件是不合适的,因为它不应该真正了解纯UI事件。但是,选择权归你所有。
要包装&#39;或处理附加属性中的任何事件,您基本上声明了一个扩展DependencyObject
类并定义一个或多个static
属性的类。我不是再次回顾整个故事,而是希望引导您回答Stack Overflow上的What's the best way to pass event to ViewModel?问题,该问题提供了更多链接和完整的代码示例。
有关附加属性的背景信息,请参阅MSDN上的Attached Properties Overview页面。