2016-07-16 19 views
0

2つのContentPresenterが別のユーザーコントロール(BとCなど)にバインドされたユーザーコントロール(たとえばA)があります。WPF - ユーザーコントロール間のバインド

2つのUserControlのうちの1つ(たとえばB)には、MyItemのlistBoxがあります。

  <ListBox ItemsSource="{Binding MyItemList}" SelectedItem="{Binding SelectedMyItem}"> 

MYITEMコード:他の一

Public Class MyItem 
    Implements INotifyPropertyChanged 

    Private m_Name As Integer 
    Public Property Name As Integer 
     Get 
     Return m_Name 
     End Get 
     Set(value As Integer) 
     m_Name = value 
     End Set 
    End Property 

    ... 

End Class 

私はのSelectedItemプロパティ(MyItem.Nameを言う)にバインドするのTextBoxを持っている(Cと言います)。

 <TextBox Text="{Binding SelectedItem.Name}"/> 

何らかの方法で使用できますか?私は1つを見つけることができないので。

答えて

0

あなたの言うことは不可能に近いです。

ビューモデルcの一部のプロパティにテキストボックステキストをバインドします。選択した項目をビューモデルbの一部のプロパティにバインドします。

選択した項目が変更されたときに、値としてNameの値を文字列としてイベントを出力します。ビューモデルcのイベントを処理し、受け取ったName引数でテキストボックステキストを更新します。

これはトリックです。

もう1つの考えられる方法は、ビューモデルでbおよびcビューモデルインスタンスを作成し、bviewmodelinstance.selectedListItemプロパティが変更されたときにcviewmodelinstance.TextboxPropertyNameを更新することです。

+0

ありがとうございました。私はビューモデルでBとCのビューモデルをほとんど作成するので、あなたが言及した2番目のメソッドに非常に興味があります。しかし、私は別のものが変更されたときにプロパティを更新する方法を理解していません。この場合、XAMLでのテキストボックスバインディングの例を書いてください。ありがとうございます – Emmanuele

+0

私は実際にVBを知りません。対応するビューモデルの文字列プロパティにバインドするだけです。親ビューモデルでviewmodelinstance.propertychangedを購読します。 propertychangedで** e **を使用してプロパティ名を確認します。プロパティ名==必要なプロパティの場合は、文字列バウンドをテキストボックスのtextプロパティに設定します。 – ViVi

関連する問題