在WPF Windows之间发送数据

时间:2012-11-26 21:53:26

标签: c# wpf forms

所以我一直在寻找并且没有找到解决方案,使用WPF Window

所以我想要做的是将两个滑块中的值从一个WPF Window发送到另一个。如何在同一个项目中使用两个WPF Window来完成?是否可以使用引用从同一解决方案中的另一个项目执行此操作?

我一直在使用Windows窗体,可以让它在那里轻松工作,但它只适用于WPF Window

[编辑]真正需要做的是非常基本的。我们有一个名为Startup的菜单项目MainWindow.xaml,但尚未包含任何需要提及的代码。虽然,我们希望从菜单中,能够使用2个滑块,1来设置将要参与的玩家数量,另一个用于设置游戏应该持续的小时数。我们已经通过设置这样的玩家数量来解决游戏本身的问题:

private void slider1_ValueChanged(object sender, RoutedPropertyChangedEventArgs<double> e)  // Change move-army-strenght
{
    movearmy = Convert.ToInt32(slider1.Value);
    lblresult3.Content = "" + movearmy;
    if (menuphase == 1) { players = Convert.ToInt32(slider1.Value); }
}

这将检查它是否为menuphase,然后从中获取玩家数量。虽然,我们希望从Menu发送此值,而不是在游戏中发送!

2 个答案:

答案 0 :(得分:2)

对于您的要求可能有点过分,但是在表单,窗口等之间发送带有数据的消息的可扩展方法是使用Mediator Design Pattern。 Marlon Grech为WPF Mediator提供了一篇优秀的文章和示例项目。

这种模式适用于发送各种消息,只要没有太多订阅者在寻找消息。

答案 1 :(得分:-1)

OP在编辑中写道:

  

[溶液]

public partial class SelectionWindow : Window
{
    WpfApplication1.GameWindow newForm2;

    public SelectionWindow()
    { InitializeComponent(); }

    private void continue_Click(object sender, RoutedEventArgs e)
    {
        if (Convert.ToInt32(slider1.Value) > 1)
        {
            Worldmap.Properties.Settings.Default.value1 = Convert.ToInt32(slider1.Value);
            Worldmap.Properties.Settings.Default.value2 = Convert.ToInt32(slider2.Value);
            Worldmap.Properties.Settings.Default.Save();
            newForm2 = new WpfApplication1.GameWindow();
            newForm2.Show();
            Close();
        }
    }

    private void slider1_ValueChanged_1(object sender, RoutedPropertyChangedEventArgs<double> e)
    { playerresult.Content = Convert.ToInt32(slider1.Value); }

    private void slider2_ValueChanged_1(object sender, RoutedPropertyChangedEventArgs<double> e)
    { timeresult.Content = Convert.ToInt32(slider2.Value); }
}