2013-07-16 3 views
0

У меня есть класс MyWindow, который наследует от Window. В MyWindow, у меня есть следующий метод, чтобы выполнить один раз моя кнопка OK нажата:Вопрос об инициализации WPF

private void OKButton_Click(object sender, RoutedEventArgs e) 
    { 
     var be = NameBox.GetBindingExpression(TextBox.TextProperty); 
     be.UpdateSource(); 
     this.Close(); 
    } 

XAML:

<Button Content="OK" 
     Click="OKButton_Click" 
     HorizontalAlignment="Left" 
     Margin="175,473,0,0" 
     VerticalAlignment="Top" 
     Width="75" 
     RenderTransformOrigin="-0.04,0.5"/> 

В отдельном классе, где я инициализировать свое окно пользовательского интерфейса, я говорю

MainWindow window = new MainWindow(ViewModel); 
window.Show(); 

Однако, как только выполняется window.Show(), выполняется следующий код, и я не могу фактически взаимодействовать с моим окном, чтобы делать то, что мне нужно. Я чувствую, что это просто недоразумение в том, как на самом деле использовать WPF в более широком контексте ... любая помощь?

+1

Что происходит, когда вы вызываете 'window.Show()'? Замораживает ли пользовательский интерфейс? Получаете ли вы какие-либо исключения или ошибки в окне вывода? Что такое «последующий код»? – PoweredByOrange

+3

Нужно ли вместо этого вызывать ['Window.ShowDialog'] (http://msdn.microsoft.com/en-us/library/system.windows.window.showdialog.aspx)? Не зная больше о том, что должно делать окно, я не решаюсь предложить это как ответ. – ChrisF

+0

Да, я думаю, что вы ищете ShowDialog. –

ответ

0

Window.ShowDialog - это то, что необходимо для просмотра страницы. Но никто не получает обязательную информацию, как и вы; который также должен быть изменен.

Когда текстовое поле теряет фокус будет обновлять связывание поэтому коду

var be = NameBox.GetBindingExpression(TextBox.TextProperty); 
be.UpdateSource(); 

не требуется. (Является ли это программированием winform формы winform?) Поэтому я предлагаю не обновлять привязку как таковую.

Единственное возможное, что нужно сделать, если привязка не обновляется, - это изменить привязку, чтобы использовать режим TwoWay, который обеспечивает прямую передачу данных между привязанной переменной и текстовым полем на экране.

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