2012-07-18 14 views
8

2つの依存関係プロパティを持つusercontrolを作成しました。これらの依存関係プロパティをmainViewModelのプロパティにバインドして、ユーザーコントロール内で何かが変更されるたびに親のプロパティが更新されるようにしたいと思います。WPFはusercontrolのプロパティを親のプロパティにバインドします

正常にバインドしようとしましたが、動作しませんでした。親コントロールのプロパティにユーザーコントロールのDPをバインドする方法を教えてください。

私はこれを試してみました: UC:

<TextBox Name="TextBox" Text="{Binding ElementName=UCName, Path=DP1, Mode=TwoWay}"/> 

メインウィンドウ:

<UCName:UCName Width="330" CredentialName="{Binding Path=DP1, Mode=TwoWay}"></UCName:UCName> 

親のプロパティに結合するためのおかげで

+0

依存プロパティにどのようにバインドするかなど、いくつかのコード例を提供してください。 – Nathan

+0

ちょうど元の投稿を編集しました – Ali

答えて

18

をあなたのバインディングでRelativeSourceを使用する必要があります。

<TextBox Name="TextBox" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type UCName:UCName}}, Path=DP1, Mode=TwoWay}"/> 

詳細:https://msdn.microsoft.com/en-us/library/ms743599(v=vs.100).aspx

PS:このような名前空間UCNameを定義することを忘れないでください。

[編集] URLを.NET 4バージョンのドキュメントに変更しました。このような

+0

あなたのリンクは古くなってしまっています。 –

5

何か:

<MainWindow DataContext="mainViewModel"> 

<local:TestControl ucDependProp="{Binding viewModelProp}/> 

</MainWindow> 


className: TestControl.xaml 
<UserControl Name="thisControl"> 
<TextBox Text="{Binding ElementName=thisControl, Path=ucDependProp}/> 
</UserControl> 

ユーザーコントロールが親ビューモデルを意識するべきではありません。