0

ウィンドウからモーダル ダイアログを作成していますが、ダイアログ内のコンボ ボックスをビュー モデルにバインドする必要がありますが、独自の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" について不平を言いました。

理由がわからないので、それについての説明は素晴らしいでしょう。もちろん、私の質問は私が見逃しているものです。ダイアログのウィンドウ タグに何か追加する必要がありますか? 祖先ウィンドウのビュー モデルが相対ソースとして使用されることをコンピューターに伝える必要がありますか?

4

1 に答える 1

0

試す:

RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type x:Window}}

Mode= と先祖型を囲む中括弧がありません。x:Type には中括弧が必要です。

于 2015-08-09T03:47:35.510 に答える