2012-03-30 5 views
0

У меня есть два вида, например, «A'.Xaml» и «B'.Xaml. В A.Xaml у меня есть текстовое поле и B.Xaml У меня есть кнопка, при нажатии кнопки, присутствующей в представлении «B», фокус должен быть установлен на элементе управления (textBox), присутствующем в «A'.Xaml (View) , Как добиться этого. Я пробовал много способов uisng Фокусное поведение, Focuselement, Focusable и т. Д., Я вижу, что основная проблема заключается в том, как настроить фокус на управление, присутствующее в разных представлениях, когда действие выполняется в другом виде? Ответьте. Спасибо заранее. KrishnaWPF Проблема с поведением фокуса

ответ

1

Вам необходимо как-то ссылаться на вид A из вашего B. Тогда вы просто использовать событие на Button в B

private void Button_Click(object sender, EventArgs e) 
{ 
    windowA.txtSomeTextBox.Focus(); 
} 

что-то подобное. Я действительно не знаю, как вы назвали ваши элементы управления, поэтому эти части, вероятно, ошибочны (поскольку я догадался).

Обратите внимание, что это всего лишь один из способов сделать это. Есть много других способов сделать это, для exmaple ... если вы используете инфраструктуру Prism, вы можете использовать EventAggregator для публикации события между двумя видами, которые не связаны друг с другом, или из модели просмотра, которая связывает Button с Command, который публикует событие, и абонент (представление) фиксирует это событие и делает то, что ему нужно делать. И т.д. и т.п.

0

Попробуйте что-то вроде:

Application.Current.Dispatcher.Invoke(() => 
     { 
      txtSomeTextBox.Focus(); 
     }); 

Вы также можете захотеть попробовать Application.Current.MainWindow, чтобы получить доступ в A.xaml.

Смежные вопросы