3

だから私は周りを見回しており、WPF を使用してこれに対する解決策を見つけていませんWindow

だから私がやりたいことは、2 つのスライダーの値をある WPFWindowから別の WPF に送信することです。Window同じプロジェクト内で2 つの WPF を使用してこれを行うにはどうすればよいですか? また、参照を使用して同じソリューション内の別のプロジェクトからそれを行うことは可能ですか?

私は Windows フォームで作業しており、そこで簡単に動作させることができますが、WPF では動作しませんWindow

[編集済み] 何をする必要があるかは、非常に基本的なことです。言及する必要のあるコードがまだ含まれていないStartupaで呼び出されたメニュー Project があります。MainWindow.xamlただし、メニューから 2 つのスライダーを使用できるようにしたいと考えています。1 つは参加するプレイヤーの数を設定し、もう 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); }
}

これは、それがmenuphase1 つであるかどうかをチェックし、そこからプレイヤーの数を取得します。Menuただし、ゲーム内ではなくからこの値を送信したいのです!

4

2 に答える 2

2

あなたの要件ではやり過ぎかもしれませんが、フォームやウィンドウなどの間でデータを含むメッセージを送信する拡張可能な方法は、Mediator Design Patternを使用することです。WPF Mediatorについては、Marlon Grech による優れた記事とサンプル プロジェクトがあります。

このパターンは、メッセージを探しているサブスクライバーが多すぎない限り、さまざまなメッセージを送信するのに適しています。

于 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 に答える