をクリックしてください:変更ウィンドウ私は2つのプロジェクトを持っている私の現在のソリューションでは
1)モデルとビューモデルと
2)2つの窓、ログインウインドウを含むUIと呼ばれるプロジェクトを含有ClassLibraryプロジェクトMainWindow。
現在、UIプロジェクトには、ビューモデルを取得するためのClassLibraryプロジェクトへの参照があります。この問題は、ウィンドウをLoginWindowからMainWindowに変更したいときに発生します。私はいくつかの記事を読んで数日間インターネットを検索していますが、私が実際に探しているものに関して満足できる結果を出すものは何もありません。通常は、複数のビューを維持/切り替えする単一のウィンドウに関係します。それは私が望むものではありません。 LoginWindowをMainWindowに変更し、ボタンクリックでLoginWindowを閉じるようにします。これはどのように達成可能ですか?
Edit1:私はMVVMを使用していることを明確にする必要があり、適切なビューモデルにアクセスする必要があると思います。私は、必要なときにいつでも特定のウィンドウの新しいインスタンスを作成し、それを隠しながら表示することはできません。
EDIT2:
public static class MainTest
{
public static int Test()
{
Thread app = new Thread((ThreadStart)delegate
{
LoginWindow login = new LoginWindow();
LoginViewModel loginVM = new LoginViewModel();
if (loginVM.IsLoggedIn == false)
{
return -1;
}
else
{
MainWindow mainWindow = new MainWindow();
mainWindow.Show();
}
}
app.SetApartmentState(ApartmentState.STA);
app.Start();
return 0;
}
}
[SOLVED] return -1
で私はというエラーを取得:私はエラーを取得するapp.SetApartmentState(ApartmentState.STA);
で
"匿名関数が値を返すことはできませんデリゲートを返すのボイドに変換します" Argument2: 'void'から 'int'に変換できません。これはデリゲートと何か関係があると思いますが、コードの一番上に書いてあります。
EDIT3:私は通常これを行うには、メインクラスを使用
? – rene
'mainWindow.Show()'( 'mainWindow'は' MainWindow'オブジェクトです)と 'this.Close()'のヘルプを呼び出す 'MainWindow'のインスタンスを作成しませんか? –
私はこれらの記事が示唆したことを試しましたが、ウィンドウ内で複数のビューを切り替えることに適用します。これは、私が達成しようとしているものではありません。https://rachel53461.wordpress.com/2011/12/18/navigation-with-mvvm -2 /とhttp://www.technical-recipes.com/2016/switching-between-wpf-xaml-views-using-mvvm-datatriggers/ – Araine