2016-07-16 122 views
0

我有一個用戶控件(比如說A)和兩個綁定到另一個用戶控件(比如B和C)的ContentPresenter。WPF - 用戶控件之間的綁定

在兩個UserControl之一(比如說B)中我有一個MyItem的列表框。

  <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 

在另一個(說C)我有要綁定到的SelectedItem屬性(說MyItem.Name)文本框。

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

有沒有可能以某種方式?因爲我找不到一個。

回答

0

你所說的幾乎是不可能的。

將文本框文本綁定到視圖模型c中的某些屬性。將列表選擇的項目綁定到視圖模型b中的某個屬性。

當選定項目發生更改時,使用參數發出事件作爲字符串Name作爲字符串。在viewmodel c中處理事件,並使用收到的Name參數更新文本框文本。

這會做到這一點。

另一種可能的方法是在viewmodel中創建b和c視圖模型實例,並在bviewmodelinstance.selectedListItem屬性更改時更新cviewmodelinstance.TextboxPropertyName。

+0

謝謝你的回答。我對你提到的第二種方法非常感興趣,因爲我幾乎在viewmodel中創建了B和C視圖模型。但我不明白如何更改另一個屬性時更改。你能否在這種情況下寫一個文本框綁定的例子(在XAML中)?謝謝 – Emmanuele

+0

其實我不知道vb。只需在相應的視圖模型中綁定到字符串屬性。在父視圖模型中訂閱viewmodelinstance.propertychanged。在propertychanged上使用** e **檢查屬性名稱。如果屬性名稱==您所需的屬性,請將綁定到文本框文本屬性的字符串。 – ViVi