在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 }" />
答案 0 :(得分:1)
尝试使用IValueConverter进行绑定
答案 1 :(得分:0)
你的C#有点不稳定 - 你需要方括号:ValuesField[FieldName]
没有理由不能单独绑定到索引集合返回的值,但是对于SL3,您可以传入的值非常有限,以指定要使用的索引。
检查this MSDN article以获取SL3功能,并this link查看SL4中可能的示例。在SL4中,你可以使用字符串索引,但看起来你不能使它们变得动态,它们必须是静态(硬)编码的。请注意,SL具有WPF具有的绑定功能的子集,因此您在WPF中看到的内容无法在SL中应用。
答案 2 :(得分:0)
VB具有创建参数化属性所需的语法,但C#不支持参数化属性。
XAML解析也无法识别参数化属性。
所以问题的简单答案是否。
在C#中模拟此方法的一种方法是在(现在无参数)属性上公开Type,该属性具有带有所需参数的Indexer。注意与XAML的兼容性,索引器仅限于具有int和/或string类型的单个参数。
使用它可以在绑定中使用类似“Property [parametervalue]”的属性路径。