できるだけ少ないウィンドウを開くように言っているWPF(および一般的なGUI)のグッドプラクティスを読みました。しかし、時には、あなたは単に選択の余地がありません。
そこで、新しいウィンドウを開くための高速でエレガントなソリューションについて考え、次のように考えました。
public static class WinManager
{
private static Dictionary<Type, Func<Window>> collection
= new Dictionary<Type, Func<Window>>();
/* Bind the type of the ViewModel with a lambda that build an
* instance of a window*/
public static void Bind(Func<Window> ctor, Type type) { ... }
/* Search in the dictionary the specified type and show the window
* returned by the lambda*/
public static void Show(Type type){ ... }
/* Search in the dictionary the specified type and show the dialogue
* returned by the lambda*/
public static void ShowDialog(Type type) { ... }
}
type
ビュー(つまりウィンドウ)にバインドされたViewModelのタイプであり、ラムダctor
はウィンドウの新しいインスタンスを返すために使用されます。
このようなウィンドウを管理するのは良い考えですか、それとも私は完全に間違っていますか?