0
這是一個MVVM WPF問題,c#。 內的窗口我有一個標籤控件,看起來像這樣如何將焦點設置爲標籤視圖選擇的視圖(用戶控件)中的文本框
<TabControl TabStripPlacement="Top" >
<TabItem Style="{StaticResource Tabitemstyle}">
<TabItem.Header>
<Label Content="Home" Style="{StaticResource Tablablestyle}"/>
</TabItem.Header>
<v:HomePageView/>
</TabItem>
<TabItem ....
<v:OtherPageView/>
的訣竅是不存在,我希望有輸入焦點當用戶選擇第二個選項卡中的第2個標籤項內的文本。
我已經嘗試了一些解決方案,但最近的一個,到目前爲止(使用數據觸發式的,或聚焦元素)幾乎工程:
我可以看到光標旨在在文本框中,但它不閃爍。似乎焦點仍在外部窗口中的選項卡控件上,而不是由OtherPageView.xaml定義的視圖中的文本框元素。當我點擊標籤一次,一切都好,但這是我試圖減輕用戶不得不做的。
謝謝。我的代碼類似於http://stackoverflow.com/questions/17063014/tabcontrols-containing-different-user-controls-using-mvvm?rq=1雖然問題是不同的。該程序有5個選項卡,其中4個我希望在選擇該選項卡時將焦點設置到特定的文本框。有沒有辦法只是聽視圖本身變得活躍?如何告訴外部窗口中的選項卡控件失去焦點並將其提供給v:OtherPageView? NB:在OtherPageView中,我可以使用MVVM燈光消息設置控件,在用戶與該視圖進行交互之後。 – user3564895
我不確定我是否理解你: 每次你點擊一個標籤項時,WPF tabcontrol的默認行爲就是重新創建它的內容視圖 - >這個視圖可以在這個時候獨立於TabControl嘗試去控制使用上述方法的焦點 我不熟悉MVVM Light,但是您可以在選項卡控件上使用SelectionChanged事件,並在其處理程序中試圖找出TabControl.Content屬性中使用的視圖。 – Ahmad
從XAML(OtherPageView.xaml)調用後面的代碼IsVisibleChanged =「UserControl_IsVisibleChanged」然後使用http://stackoverflow.com/questions/3971179/wpf-tabcontrol-on-selectionchanged-set-focus-to-a-text-field該頁面的xaml.cs(如果可見)Despatcher.BeginInvoke(new Action(()=> {boxname.Focus();}));它的工作原理。 – user3564895