2014-09-05 68 views
0

我有這樣的情況,我有2個使用MVVM模式開發的WPF表單。第二個表單將從第一個表單開始(form1將在後端直到form2關閉)並關閉第二個表單使第一種形式活躍。WPF MVVM默認焦點在文本框和selectAll

現在我想在form1上設置默認焦點的文本框。我能夠用FocusManager做到這一點,並且它的工作正常,但是當我從form2進入form1時,這同樣不能正常工作。同樣在這段時間內,我必須將重點放在默認文本框上,並且我還需要選擇其中的所有文本。我無法理解如何使用viewmodel來做到這一點。

任何建議對我都有很大的幫助。

問候,

克里希納

+0

請張貼代碼/工作你到目前爲止。 – nakiya 2014-09-05 07:48:12

回答

0

可以使用FocusManager.FocusedElement Attached Property集中特定的UI元素:

<Grid FocusManager.FocusedElement="{Binding ElementName=SomeTextBox}"> 
    <TextBox Name="SomeTextBox" Text="{Binding SomeProperty}" /> 
</Grid> 

選擇每個視圖被加載/ UserControl時間TextBox

至於如何從視圖模型中選擇文本...解決方案將是相同的處理任何事件時使用MVVM。將其包裝在附加屬性中。請注意,處理視圖模型中的所有事件是不合適的,因爲它不應該真正瞭解純粹的UI事件。但是,選擇是你的。

要「包裝」,或者在處理附加屬性任何情況下,你基本上宣佈擴展DependencyObject類的類和定義一個或多個static性能。我不想重複整個故事,而是希望引導您回答Stack Overflow的What's the best way to pass event to ViewModel?問題,該問題提供了更多鏈接和完整的代碼示例。

有關附加屬性的背景信息,請參閱MSDN上的Attached Properties Overview頁面。