0

我有一个MyWindow继承自Window. 在MyWindow中,单击“确定”按钮后,我将执行以下方法:

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"/>

在我初始化 UI 窗口的单独类中,我说

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

但是,一旦window.Show()执行,后续代码就会执行,我实际上无法与我的窗口交互来做我需要做的事情。我觉得这只是对如何在更大的上下文中实际使用 WPF 的误解......有什么帮助吗?

4

1 回答 1

0

Window.ShowDialog是查看页面所需的内容。但是没有像您那样获得绑定信息;这也应该改变。

当文本框失去焦点时,它将更新绑定,因此代码

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

不需要。(这是一种剩余形式的 winform 编程吗?)所以我建议不要像这样更新绑定。

如果绑定没有更新,唯一可能做的事情是更改绑定以使用TwoWay确保绑定到的变量和屏幕上的文本框之间来回数据传输的模式。

于 2015-07-24T16:27:19.373 回答