我可以将silverlight控件绑定到DynamicObject.Properties吗?
我有一个DynamicObject类,它绑定到silverlight xaml中的一些控件我可以将silverlight控件绑定到DynamicObject.Properties吗?,silverlight,binding,dynamic,Silverlight,Binding,Dynamic,我有一个DynamicObject类,它绑定到silverlight xaml中的一些控件 class Localizer { public Strings Strings { get; set; } } public class Strings : DynamicObject { Dictionary<string, string> values; public Strings(Dictionary<string, string> value
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;
}
}
它工作正常,是否可以在xaml中将控件绑定到DynamicObject?不幸的是,这是silverlight中的一个bug,:(
在Silverlight 4中,您不能数据绑定属性,但可以数据绑定索引器。因为我假设您不支持字符串对象中的实时数据更改,因为它不支持
InotifyPropertyChanged
,所以您可以返回字典并使用索引器绑定语法
但是,如果您确实需要支持InotifyPropertyChanged,silverlight具有用于通知特定索引器值的更改的语法可以在String对象中使用的新PropertyChangedEventArgs(“Item[“+key+”])
Silverlight 5可能有一个简单的,也可能有一个困难的,现在很难说
<TextBlock Text="{Binding Strings.User, Source={StaticResource Localizer}}"/>
string UserName = localizer.Strings.Login;