ウィンドウからモーダル ダイアログを作成していますが、ダイアログ内のコンボ ボックスをビュー モデルにバインドする必要がありますが、独自のDataContextのコンボ ボックスにはバインドする必要はありません。代わりに、ダイアログを作成したウィンドウのビュー モデル内のプロパティにコンボ ボックスをバインドする必要があります。
マークアップは以下の通り。
<ComboBox x:Name="Options"
ItemsSource="{Binding
RelativeSource={
RelativeSource FindAncestor,
AncestorType=x:Type Window},
Path=DataContext.AllOptions}"
...
Style="{StaticResource DefaultComboBoxStyle}" />
SOからのさまざまな提案に従おうとしていますが、次のエラーにしか到達していません。バインディングの例のリストもありますが、これで私が賢くなるわけではありません。
{"''System.Windows.Baml2006.TypeConverterMarkupExtension' の値を提供すると、例外がスローされました。' 行番号 '131' および行位置 '15'."}
そして、内部例外は次のとおりです。
{"文字 'w' は、文字列 'x:Type Window' で予期されていませんでした。無効な XAML 型名です。"}
作成ウィンドウの名前(ProgramWindow )を含め、 Window以外のものを試しましたが、同じ文字「w」について不平を言いました!そして、 x:Type Programをしばらく撮影したところ(w ではありません!)、代わりに文字 "m" について不平を言いました。
理由がわからないので、それについての説明は素晴らしいでしょう。もちろん、私の質問は私が見逃しているものです。ダイアログのウィンドウ タグに何か追加する必要がありますか? 祖先ウィンドウのビュー モデルが相対ソースとして使用されることをコンピューターに伝える必要がありますか?