デスクトップアプリケーションのナビゲーション部分に取り組んでいますが、少し問題があります。要求は、ナビゲーションを動的にすることです。これにより、たとえば、再コンパイルせずにビューの順序を切り替えることができます(理想的には、再コンパイルせずにビューを追加することもできます)。
現在、XMLを使用して、表示するウィンドウ、表示するヘッダー、およびフッターの外観を定義しています。XMLは次のようになります。
<?xml version="1.0" encoding="utf-8" ?>
<ArrayOfViewState xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<ViewState ViewName="WelcomeView" Header="Welcome to the Application" FooterButton1="Quit" FooterButton2="Back" FooterButton3="Next" />
<ViewState ViewName="LicenseView" Header="Licence Agreement" FooterButton1="Quit" FooterButton2="Back" FooterButton3="Next" />
<ViewState ViewName="LoginView" Header="Log in" FooterButton1="Quit" FooterButton2="Back" FooterButton3="Next" />
<ViewState ViewName="InstallationView" Header="Installing..." FooterButton1="Cancel" FooterButton2="None" FooterButton3="Next" />
<ViewState ViewName="UpdateView" Header="Updating..." FooterButton1="Cancel" FooterButton2="None" FooterButton3="Next" />
<ViewState ViewName="FinishedView" Header="Finished!" FooterButton1="None" FooterButton2="None" FooterButton3="Finish" />
</ArrayOfViewState>
そして、コードでこれを一致させると、次のようになります(viewState.ViewのタイプはUserControlです)。
...
case "WelcomeView":
viewState.View = new WelcomeView();
...
ご覧のとおり、XMLのViewNameプロパティを使用して、ビューを照合および作成します(ViewModelもありますが、XAMLおよびMVVM Light ViewModelロケーターによって処理されます)。
このソリューションでは、技術的には、再コンパイルせずにナビゲーションをいくらか変更できます(たとえば、順序を好きなようにシャッフルできます)が、文字列プロパティを照合するよりも、これを処理するためのより良い方法が必要です。他のプロパティと一緒にロードできるように、ユーザーコントロールのシリアル化を検討しましたが、これまでのところうまくいきませんでした。これをどのように進めて改善/変更するかについてのアイデアはありますか?
ありがとう!