WPF MVVM默认焦点在Textbox和selectAll上

时间:2014-09-05 05:28:34

标签: wpf mvvm textbox focus

我有这样的情况,我有两个使用MVVM Pattern开发的WPF表单.2nd表单将从第一个开始(form1将在后端,直到form2关闭),关闭第二个表单使第一个表单处于活动状态。

现在我想在form1上创建一个文本框,并在其上设置默认焦点。我能够用FocusManager做它并且它的工作正常但是当我从form2进入form1时,同样不能正常工作。此外,在此期间我必须将焦点设置在默认文本框上,同时我还需要选择其上的所有文本。我无法理解如何使用viewmodel执行此操作。

任何建议对我都有很大的帮助。

此致

克里希纳

1 个答案:

答案 0 :(得分:2)

您可以使用FocusManager.FocusedElement Attached Property

来关注特定的UI元素
<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页面。