2017-04-21 71 views
0

我試圖在打開它之後將變量WorkOrderText傳遞到新窗口。我使用了描述的方法here,但是變量值沒有被顯示。在Visual C中通過WPF Windows獲取和設置變量#

首先設置變量的窗口可以在這裏找到 public string testingString;

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(); 

    } 

正在接收變量和triyng顯示可以在這裏找到的窗口:

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