从wpf中的另一种形式控制表单

时间:2010-08-20 00:57:48

标签: c# wpf

如何从另一个表单示例控制主表单我想从wpf中的另一个表单访问主表单中的表?

3 个答案:

答案 0 :(得分:0)

您可以使用UI自动化(只允许您与其进行交互,就像您是用户点击/键入控件一样): http://msdn.microsoft.com/en-us/library/dd561932(VS.85).aspx

或者您可以使用后面的代码将引用从一个窗口传递到另一个窗口,可能在您的Application类中。

WPF没有任何特定内容可以使任一选项变得更容易或更难实现。

答案 1 :(得分:0)

salamonti, 是否要访问主窗体上的控件或控件正在显示的数据?如果是后者,我建议你将数据保存在一个单独的区域,而不是提供它的控件。这可以通过MVVM和其他几种视图分离模式来实现。您还可以使用“路由事件”和“路由命令”从一个“表单”中执行代码。

如果要从子表单访问“主表单”,可以在FrameworkElement类型的子表单上创建一个属性。然后,在创建子表单时,只需使用主表单的实例填充此属性。通过这种方式,您可以访问主窗体中的任何内容。

答案 2 :(得分:0)

这是WPF中窗口之间的一小部分通信

您可以将控件称为对类字段的处理方式,因为它们就是

public class Form1 : Window
{
    public DateTime FormCreationDate {get; set;}

    private void button1_Click(object sender, RoutedEventArgs e)
    {
        Form2 a = new Form2();
        a.Owner = this;
        a.Show();
    }
}


public class Form2 : Window
{
    private void Window_Loaded(object sender, RoutedEventArgs e)
    {
        this.label1.Content = string.Format(
            "the owner of this window was created on {0}", 
            ((Form1)this.Owner).FormCreationDate.ToString());
    }
}