進行中のすべてのデータビットを処理するために、背後にあるMVVMを使用するSilverlightページがあります。
データコンテキストは、以下を使用してページに設定されます。
DataContext="{Binding AddNewClientViewModel, Source={StaticResource ServiceLocator}}"
ServiceLocatorは、IoCコンテナを使用して適切なVMを作成および挿入できるようにするサービスです。
これはすべて正常に機能します。
今、私は次のようなDataFormを持っています:
<df:DataForm CurrentItem="{Binding NewClient}" AutoGenerateFields="False" >
<df:DataForm.NewItemTemplate>
<DataTemplate>
<StackPanel>
<df:DataField>
<TextBox Text="{Binding ClientName}" />
</df:DataField>
<df:DataField>
<TextBox Text="{Binding Property_on_the_VM_not_on_NewClient}" />
</df:DataField>
</StackPanel>
</DataTemplate>
</df:DataForm.NewItemTemplate>
</df:DataForm>
OK、このデータフォームは私のViewModelのNewClientプロパティにバインドします。最初のDataFieldはNewClient.ClientNameにバインドされます。ルートViewModelにぶら下がっているプロパティにバインドしたい2番目のDataField。
バインド時に渡すことができる「ソース」パラメーターがあることは知っています。VMなどの静的リソースがある場合は、それを指すことができますが、そうではありません。このバインディングを親VMのプロパティとリンクするにはどうすればよいですか?
編集
以下のJobiによる投稿の後、私は次のことを試しました。
<TextBox DataContext="{Binding DataContext, ElementName=root}" Text="{Binding MyProperty}" />
そして私のトップレベルのコントロール:
x:Name="root"
DataContext="{Binding AddNewClientViewModel, Source={StaticResource ServiceLocator}}"
これを機能させるためのサイコロはありません...