0

私は以下を持っています

MyAwesomeControl(ユーザーコントロール)

内部にテキストボックスがあります。これは、 Textと呼ばれる依存関係プロパティにバインドされています。

SimpleViewModel

オブジェクトのように(実際にはVMではありませんが、要点を理解します)、人々のコレクションを設定します(これは観察可能です)

また、変更を通知するSelectedPersonプロパティもあります

メインページコントロール

SimpleViewModelに設定されたデータコンテキストに は、人物のコレクションにバインドされたグリッドが含まれています(これは人物を選択するために使用されます)

TextプロパティがSelectedPerson.NameにバインドされたMyAwesomeControl

SelectedPerson.NameにもバインドされたTextBlock

ここで小さな解決策を作成しました:https ://skydrive.live.com/redir?resid = 82ECBE29B8DC2CD5!300

問題

グリッドで人を選択すると、MyAwesomeControlのテキストボックスが更新されません。

メインフォームのテキストブロックはそうです。

ユーザーがMyAwesomeControlのテキストへのバインディングを提供し、内部テキストボックスを更新できるようにするにはどうすればよいですか(このコントロールは再利用されるため、メインページ固有の値を認識できません)

どうもありがとう

4

1 に答える 1

1

カスタムusercontrol内のカスタムdependecyプロパティにバインドする必要がある場合は、要素バインディングを使用する必要がありDataContext、ユーザーコントロール内で設定しないでください。

したがって、サンプルを機能させるには、次の手順に従う必要があります。

  • DataContext = this;userControlのコンストラクターからを削除する必要があります

  • UserControlに名前を追加するだけです。例:<UserControl ... x:Name="Self" >

  • そして、テキストバインディング(内部)ElementNameでwithを使用します。SelfMyAwsomeControl.xaml

    Text="{Binding Text, ElementName=Self, Mode=TwoWay}"
    

更新を機能させたくない場合は、カスタムコントロールを使用する場所(内部)にも設定Modeする必要があります。TwoWayMainPage.xaml

Text="{Binding SelectedPerson.Name, Mode=TwoWay}"
于 2012-11-13T16:26:17.067 に答える