所以我一直在寻找并且没有找到解决方案,使用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
发送此值,而不是在游戏中发送!
答案 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); } }