2015-10-05 29 views
0

我有一個窗口,顯示可變數量的相同UserControls,其中包含(其中包括)一個TextBox。一個ViewModel同時提供窗口和UserControls。當所需的索引傳遞給UserControl的構造函數時,如何將UserControl的TextBox的Text屬性綁定到視圖模型中的List-of-strings元素?WPF綁定文本框到列表<string>使用變量索引

我還需要Mode =「TwoWay」和UpdateSourceTrigger =「PropertyChanged」。

使用VS2013,.NET 4.5.2和MVVM-Light框架。

謝謝。

+0

爲什麼不使用額外的屬性來代替試圖將列表綁定到字符串屬性? – Jannik

回答

0

決定創建一個新的ViewModel類來服務UserControls,每個對象一個。創建UserControls的相同類現在創建ViewModels並在UserControls ctor中傳遞一個。

2

您需要在ViewModel中創建一個新的屬性,作爲該調用的「包裝器」。

public string MyElementItem { 
    get { return myStringList[myAwesomeIndexFromConstructor]; } 
    set { 
     myStringList[myAwesomeIndexFromConstructor] = value; 
     RaisePropertyChanged(...); 
} 

然後綁定到這個新的屬性,它應該爲你做魔術!

<TextBox Text="{Binding MyElementItem, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" /> 
+0

這是UserControl的構造函數,它知道索引; ViewModel包含提供所有UserControl的List。我已更新我的帖子以澄清更大的圖片。 –

+0

你能夠以某種方式「索引」具有索引值的ViewModel嗎? 可以通過將值傳遞給其構造函數(取決於它的設置),也可以發送包含要使用的索引值的命令。 –

+0

但是,視圖模型如何跟蹤哪個索引對應於哪個UserControl?你是說UserControl應該以某種方式在ViewModel中設置一個屬性,然後向ViewModel請求這個字符串? –