私はデスクトップアプリケーションのナビゲーション部分に取り組んでおり、少し問題があります。リクエストは、ナビゲーションを動的にする必要があります。たとえば、再コンパイルすることなくビューのオーダーを切り替えることができます(理想的には、再コンパイルせずにビューを追加することもできます)。WPFのナビゲーションを動的にする - XMLファイルを使用しますか?
現在のところ、表示するウィンドウ、ヘッダーとフッターの外観を定義するために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();
...
ViewModelを持っていますが、XAMLとMVVM Light ViewModel Locatorで注意が払われています)。
このソリューションでは、技術的には、再コンパイルなしでナビゲーションを多少変更することができます(たとえば、任意の順序でシャッフルできます)が、文字列プロパティを照合するよりも、これを処理する方が良い方法が必要です。私は、他のプロパティと一緒にロードすることができるようにUser Controlをシリアル化することを検討しましたが、これまでは運がありませんでした。どのように移動し、改善するか/これを変更する上の任意のアイデア?
ありがとうございます!
はそれを動作させるには、この朝のビットのためにこれに従事し、それは優れたソリューションです!どうもありがとう!私は思考パターンでXMLに悩まされていましたが、これはナビゲーションを処理するもっときれいな方法です。 –
@AmadeusHein:私が手伝ってくれてうれしいです。 MEFは、多くの目的のために本当に素晴らしいです。ここ2年間は私がすでにいくつかのプロジェクトで取り組んでいましたが、今は真っ暗になっています。なぜ私がMEFをあまり長くは避けようとしたのか分かりません... –