数据绑定到索引属性
我有一个控件绑定到实现 INotifyPropertyChanged 的对象的索引属性。
问题是,我不知道如何通知该特定索引字符串的属性更改信号。
有人告诉我可以使用OnPropertyChanged("")来通知整个对象需要改变。
但我需要的是类似 OnPropertyChanged("Some index property string").
有办法做到这一点吗?
非常感谢。
ps:
我想做的是应用 MVVM 模式。 我使用 viewmodel 类来包装普通的 POCO 对象。因此,当我绑定时,我绑定到[index property],以便我可以通知更改。此方法使我免于:
- 为我需要的每个属性包装内部域 POCO 对象。
- 通知每个包装属性中的属性发生更改。
代码
public class ViewModelEx<T_Self, T_Core> : ViewModelEx<T_Self> where T_Self : ViewModelEx<T_Self, T_Core>
{
private static Type _s_coreType = typeof(T_Core);
private static Dictionary<string, PropertyInfo> _s_corePropInfos = new Dictionary<string, PropertyInfo>();
private static PropertyInfo GetPropertyInfo(string prop)
{
if (_s_corePropInfos.ContainsKey(prop) == false)
_s_corePropInfos.Add(prop, _s_coreType.GetProperty(prop));
return _s_corePropInfos[prop];
}
public T_Core Core { get; set; }
public object this[string propName]
{
get
{
return GetPropertyInfo(propName).GetValue(Core, null);
}
set
{
GetPropertyInfo(propName).SetValue(Core, value, null);
IsModified = true;
//RaisePropertyChanged(propName);
RaisePropertyChanged("");
}
}
public R Val<R>(Expression<Func<T_Core, R>> expr)
{
return (R)this[Core.GetPropertyStr(expr)];
}
public void Val<R>(Expression<Func<T_Core, R>> expr, R val)
{
this[Core.GetPropertyStr(expr)] = val;
}
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您无法在 WPF 中为特定索引绑定创建通知,只能通知所有索引绑定:
应该与以下内容相同:
您可以使用
IndexerNameAttribute
。(在 Silverlight 中,您实际上可以在括号内指定一个索引,以仅影响该特定绑定。)
You cannot create notifications for specific index bindings in WPF, you can only notify all index-bindings:
Which should be the same as:
You could override this string using the
IndexerNameAttribute
.(In Silverlight you can actually specify an index inside the brackets to only affect that specific binding.)