【发布时间】:2011-11-17 00:51:12
【问题描述】:
我有一个 DynamicObject 类,它绑定到 silverlight xaml 中的一些控件。
class Localizer
{
public Strings Strings { get; set; }
}
public class Strings : DynamicObject
{
Dictionary<string, string> values;
public Strings(Dictionary<string, string> values)
{
this.values = values;
}
public override bool TryGetMember(GetMemberBinder binder, out object result)
{
string value;
bool success = values.TryGetValue(binder.Name, out value);
result = value;
return success;
}
}
并像这样绑定一些控件:
<TextBlock Text="{Binding Strings.User, Source={StaticResource Localizer}}"/>
当我运行应用程序时,VS 输出中出现此错误:
System.Windows.Data 错误:BindingExpression 路径错误:在“....Localization.StringsResource”“....Localization.StringsResource”上找不到“Login”属性(HashCode=10857028)。 BindingExpression: Path='Strings.Login' DataItem='....Localization.Localizer' (HashCode=30604389);目标元素是'System.Windows.Controls.Button'(名称='btnLogin');目标属性是“内容”(类型“System.Object”)。
但是当在这样的代码中读取属性时:
string UserName = localizer.Strings.Login;
它工作正常,是否可以将控件绑定到xaml中的DynamicObject?
【问题讨论】:
标签: silverlight binding dynamic