有如下幾種方式:
1) 聲明個全局變量,就是App.xaml裡面聲明;在所有窗體裡面都可以引用 Application.Current.Properties["ArgumentName"];
2) 第二個就是 在目标窗體上面公開個 屬性,直接指派;
3) 最後就是在Uri裡面傳參數 NavigationService.Navigate(window object,argument value)
4) 采用事件響應,傳遞值。
以下以執行個體具體說明事件響應傳值:點選主視窗MainWindow 上的一個OpenSubWindow按鈕 -> 打開子視窗SubWindow -> 在子視窗中的TextBox中輸入值, 點選OK後關閉 -> 主視窗上的TextBox擷取子視窗中的值。
4、事件響應傳值。
1) 在子視窗中定義一個事件PassValuesEvent。 當點選 OK 按鈕時,觸發事件,并傳遞數值。( PassValuesEventArgs 是EventArgs類,需要同時定義好)
public partial class SubWindow : Window
{
public delegate void PassValuesHandler(object sender, PassValuesEventArgs e);
public event PassValuesHandler PassValuesEvent;
public SubWindow()
{
InitializeComponent();
}
private void btnOK_Click(object sender, RoutedEventArgs e)
{
string value1 = tbValue1.Text; // Text Property return value is string type .
int value2;
Int32.TryParse(tbValue2.Text, out value2);
PassValuesEventArgs args = new PassValuesEventArgs(value1, value2);
PassValuesEvent(this, args);
this.Close();
}
}
2) 在主視窗中的OpenSubWindow按鈕點選的方法中,訂閱了PassValuesEvent事件。當事件觸發時,擷取傳遞的參數的值。
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}
private void btnOpenSubWindow_Click(object sender, RoutedEventArgs e)
{
SubWindow subWindow = new SubWindow();
// 訂閱事件
subWindow.PassValuesEvent += new SubWindow.PassValuesHandler(ReceiveValues);
subWindow.Show();
}
private void ReceiveValues(object sender, PassValuesEventArgs e)
{
this.tbValue1.Text = e.Value1;
this.tbValue2.Text = e.Value2.ToString();
}
}