发新话题
打印

请问wpf如何在两个页面之间传值啊?给点例子,谢谢!

请问wpf如何在两个页面之间传值啊?给点例子,谢谢!

问的很笼统

获得页面的引用,传值

比如两个Page,
public class OnePage : Page
public class TwoPage : Page

$1
主窗口创建这两个窗口的时候可以把一个的引用Set给另一个

public class MainPage
{
  public void CreatePage()
  {
    OnePage page1 = new OnePage();
    TwoPage page2 = new TwoPage();
    //page2持有一份page1的引用 当然这样不是什么好方法
    page2.PreviousPage = page1;
  }
}

$2
创建一个静态的PageManager
public class PageManager
{
  //Singleton 用个单体模式
  ...
  public static PageManagerInstance
  {
      get
      {
        //double lock
        ...
      }
  }
  public OnePage OnePage {get;set;}
  public TwoPage TwoPage {get;set;}
}

然后
public class MainPage
{
  public void CreatePage()
  {
    OnePage page1 = new OnePage();
    //保存OnePage的引用
    PageManager.PageManagerInstance.OnePage = page1;
    TwoPage page2 = new TwoPage();
    //同上
  }
}
这样在Page2里
public class TwoPage
{
    public void Function()
    {
      PageManager.PageManagerInstance.OnePage //获得Page1的引用
    }
}

$3
不然,发消息Event,控件初始化的时候Register一下,需要传值的时候EventArgs里指定要发给哪个控件,干什么事,数据等等,就不写了

Hope this helps
and 50 scores~ ^)^

TOP

情景:如果有From A先调用From B,在From B的按钮事件中要操作From A的控件(例子中是From A的ListView)
解决办法:
• 在From B中定义变量ListView
namespace Wubee
{
    public partial class FromB : Form
    {
        ListView myLV;
    }
}
• 重载From B的构造函数,方法的参数为ListView
        public FromB(ListView thisLV)
        {
            this.myLV = thisLV;
            InitializeComponent();
        }
• 然后就可以直接在From B中操作myLV,操作的结果将影响至Form A
        private void test()
        {
            //New a ListViewItem, and add some strings
            ListViewItem newLVItem = new ListViewItem("String A");
            newLVItem.SubItems.Add("String B");
            newLVItem.SubItems.Add("String C");

            //Add the ListViewItem to ListView
            myLV.Items.Add(newLVItem);            
        }


hope helps,方法都差不多,主要是设计思想

TOP

发新话题