3

所以我一直在环顾四周,并没有找到使用 WPFWindow的解决方案。

所以我想做的是将两个滑块的值从一个 WPFWindow发送到另一个。这应该如何Window在同一个项目中使用两个 WPF 来完成?是否可以使用引用从同一解决方案中的另一个项目中做到这一点?

我一直在使用 Windows 窗体,并且可以让它在那里轻松工作,但它不能与 WPF 一起工作Window

[编辑] 需要做的是非常基本的。我们有一个名为 Project 的菜单项目StartupMainWindow.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,而不是在游戏中!

4

2 回答 2

2

对于您的要求来说,这可能有点过头了,但是在表单、窗口等之间发送带有数据的消息的一种可扩展方式是使用Mediator Design Pattern。Marlon Grech 为WPF Mediator撰写了一篇出色的文章和示例项目。

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

于 2012-11-27T01:50:52.793 回答
-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); }
}
于 2016-01-19T09:04:32.563 回答