将值从一种形式传递到另一种形式而无需重新加载

时间:2016-07-26 04:33:59

标签: c# wpf

如何在不重新加载窗口的情况下将值从一个窗口传递到另一个窗口

private void btn1_Click(object sender, RoutedEventArgs e)
{
    DateTime date = Convert.ToDateTime(lbl_date1.Content);

    Vazhipadu_receipt obj = new Vazhipadu_receipt(date);
    obj.ShowDialog();
    //this.Close();

}

public Vazhipadu_receipt(DateTime date)
{
    //DateTime date_v = date;
    //string day = date_v.ToString("dd");

    //txt_mnth_v.Text = date.ToString("MM");
    //txt_year_v.Text = date.ToString("yyyy");
    InitializeComponent();
    //window_load();
    load();
    txt_day_v.Text = date.ToString("dd");
    txt_mnth_v.Text = date.ToString("MM");
    txt_year_v.Text = date.ToString("yyyy");
   // this.sessionNow = sessionNow;
}

1 个答案:

答案 0 :(得分:0)

请使用MVVM模式,不需要重新加载控件 如果你想在加载新窗口后将数据从一个页面传递到另一个页面,你需要使用代理,事件,操作,WPF / C#中有很多选项#

我正在考虑你有一个主页,从那里你试图打开一个新窗口(Vazhipadu_receipt)

在这种情况下,您需要按照以下步骤操作 首先创建代理和事件,如下面的

public delegate void ChildControlDelegate(bool IsVisible);//Delegate with Parameter which value you need to pass


public event ChildControlDelegate GetDataFromChild;//Event to execute

然后在需要传递如下所示的值时引发事件

if (GetDataFromChild != null)
        {
            GetDataFromChild(true);
        }

然后在另一个页面中,您需要注册下面的事件

usrcntrleStatement obj = new usrcntrleStatement(pnsnLoginmodel);
obj.GetDataFromChild += Obj_GetDataFromChild;

并创建新的值捕获方法

private void Obj_GetDataFromChild(bool IsVisible)
    {
        if (IsVisible)
            LoadingGrid.Visibility = Visibility.Visible;
        else 
            LoadingGrid.Visibility = Visibility.Collapsed;
    }