2010-04-14 67 views
2

在silverlight中,你可以綁定到包含參數的屬性嗎?例如,以下內容似乎不起作用。我錯過了什麼,或者這是不可能的?您可以將數據綁定到包含Silverlight參數的屬性嗎?

C#

private System.Collections.Generic.Dictionary<string, string> ValuesField = new System.Collections.Generic.Dictionary<string, string>(); 
public string Value { 
    get { return ValuesField(FieldName); } 
    set { ValuesField(FieldName) = value; } 
} 

VB

Private ValuesField As New System.Collections.Generic.Dictionary(Of String, String) 
Public Property Value(ByVal FieldName As String) As String 
     Get 
      Return ValuesField(FieldName) 
     End Get 
     Set(ByVal value As String) 
      ValuesField(FieldName) = value 
     End Set 
End Property 

XAML

<TextBox Name="TextBox1" VerticalAlignment="Top" Width="120"Text="{Binding Path=Value[MyField],Mode=TwoWay }" /> 

回答

1

嘗試使用IValueConverter進行綁定

+0

您可以擴展如何做到這一點嗎? – 2011-03-03 15:08:58

0

你的C#是有點靠不住的 - 你需要方括號:ValuesField[FieldName]

沒有理由ŧ您不能單向綁定從索引集合返回的值,但對於SL3,您可以通過指定索引來使用的值非常有限。

檢查this MSDN article爲SL3功能,和this link爲SL4中可能的一些例子。在SL4中,您可以使用字符串索引,但它看起來不像可以使它們變成動態的,它們必須靜態(硬編碼)編碼。請注意,SL具有WPF所具有的綁定功能的子集,因此您在WPF中看到的內容不一定適用於SL。

0

VB具有創建參數化屬性所需的語法,但C#不支持參數化屬性。

XAML解析也不能識別參數化的屬性。

所以你的問題的簡單答案是

在C#中模擬此方法的一種方法是在具有需要參數的Indexer的(現在無參數的)屬性上顯示Type。注意與XAML的兼容性索引器僅限於具有int和/或string類型的單個參數。

因此,您可以在綁定中使用屬性路徑,如「Property [parametervalue]」。

相關問題