0

MyWindowから継承するクラスがありWindowます。内MyWindowには、[OK] ボタンがクリックされたときに実行する次のメソッドがあります。

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 に答える