2017-04-21 2 views
0

変数を開くと、新しいウィンドウに変数WorkOrderTextを渡そうとしています。 hereの方法を使用しましたが、変数の値は表示されません。Visual C#でWPF Windowsで変数を取得および設定する

変数が最初に設定されたウィンドウは、ここにあります。 public string testingString;変数を受信して​​表示するようにtriyngされるウィンドウはここで見つけることができます

public partThreeWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Button_Click_1(object sender, RoutedEventArgs e) 
    { 
     testingString = new TextRange(descriptionBox.Document.ContentStart, descriptionBox.Document.ContentEnd).Text; 
     partFourWindow partFour = new partFourWindow(); 
     partFour.workOrderText = testingString; 
     partFour.Show(); 
     this.Hide(); 

    } 

public string workOrderText { get; set; } 

    public partFourWindow() 
    { 
     InitializeComponent(); 
     this.WindowStartupLocation = WindowStartupLocation.CenterScreen; 
     this.ResizeMode = ResizeMode.NoResize; 
    } 

    private void partFourWindow_Shown(object sender, EventArgs e) 
    { 

     testing.Text = this.workOrderText; 

    } 

しかし、テキストボックスが空に表示されます。私はこれを間違っているのですか?

+0

はい、これは間違っています。 WPFの変更は、ビューモデル、モデル、他のビューモデルに戻し、INPCにビューを更新させるはずです。それはたくさんのように聞こえるが、長期的に見ればより良い。 MVVMの研究。 – BradleyDotNET

+0

@BradleyDotNET MVVMを調べる。 WPFとVisual C#の初心者です。そのため、私は頭の中を包み込む必要があります。 – tmello01

答えて

1

Shownイベントは、WinForms Form.Shown Eventでのみ利用可能です。

partFourWindow_Shownはどこでも呼ばれますか? サンプルコードから呼び出されていません。テキストを更新するには、ウィンドウのLoadedイベントにフックできます。

public partFourWindow() 
{ 
    InitializeComponent(); 
    this.WindowStartupLocation = WindowStartupLocation.CenterScreen; 
    this.ResizeMode = ResizeMode.NoResize; 
    this.Loaded += OnLoaded; 
} 

private void OnLoaded(object sender, RoutedEventArgs routedEventArgs) 
{ 
    testing.Text = this.workOrderText; 
} 
+0

これはうまくいきました!私はonLoadのための組み込み関数を見つけることができませんでした。助けてくれてありがとう! – tmello01

関連する問題