2010-06-30 60 views
0

一個用戶控件是一個列表框,列表中的每個項目都有一個按鈕。單擊該按鈕時,有關該項目的可編輯細節將顯示在另一個用戶控件中。細節知道要顯示什麼以及如何通過數據綁定到視圖模型來顯示它。兩個用戶控件都在同一個窗口中。根據另一個用戶控件中的操作將焦點設置在一個用戶控件中

我在這裏發現棘手的問題是將焦點設置爲第一個非只讀文本框。

我見過一個解決方案here,涉及到編寫標記擴展。不過現在也有點老了,我想知道是否有更簡單的方法來做到這一點。

乾杯,
Berryl

我應該指出,這是獲得焦點的文本框中觸發EditCommand是綁定到上市用戶控制視圖模型。儘管如此,我並不介意讓代碼隱藏起來。

更新 這是Josh Smith最近的nifty post,它解決了這個意圖的一部分;能夠通過ViewModel控制焦點。

+0

如何在點擊按鈕時調用'textBoxName.Focus()'? – Jay 2010-06-30 03:53:47

回答

0

好吧,可能還有其他方法可以做到這一點,但因爲我在我的問題提到了Josh Smith solution使用數據綁定框架本身,它與MVVM一起使用是沒有道理的。不要隨意使用視覺樹或試圖在嵌套控件上扭曲你的思維 - 簡單,優雅,並且最棒的是它的工作原理!

BH

1

您可以使用VisualTreeHelper找到具體的文本框控件,並嘗試textboxcontrol.Focus()

+0

我對VisualTreeHelper類不熟悉,但聽起來很有用(這是wpf和silverlight的框架類嗎?)。不知道在這種情況下,以及視圖模型中的EditCommand如何使用它。你能理解這個嗎? – Berryl 2010-06-30 14:22:41

+0

我不認爲EditCommand設置了重點。請參閱以下鏈接 http://stackoverflow.com/questions/636383/wpf-ways-to-find-controls http://www.codeproject.com/KB/WPF/WpfElementTrees.aspx – Ragunathan 2010-07-01 05:10:10

相關問題