【发布时间】:2014-09-04 08:59:17
【问题描述】:
我正在尝试在多个视图上共享一个 BaseViewModel。 因此,我想让 ViewModel 实现不同的接口,每个视图一个。
public class BaseViewModel : IBaseViewModelTypeI, IBaseViewModelTypeII {
public PropertyI { get; set; }
public PropertyII { get; set; }
}
public interface IBaseViewModelTypeI {
PropertyI { get; set; }
}
public interface IBaseViewModelTypeII {
PropertyII { get; set; }
}
在我的视图中,我想将 ViewModel 设置为 DataContext 并仅将在接口中实现的属性公开为可绑定属性。
但 WPF 似乎解析为我的 BaseViewModel 的 BaseType,因此公开了对我的 BaseViewModel 中定义的每个属性的访问权限。
有什么办法可以解决这个问题,或者这是一个糟糕的模式吗?
【问题讨论】:
-
它可能会使用反射来处理绑定,而不是解析为 基本类型,因此您施加的任何基于类型的限制都是无用的。
-
那么,没有办法限制访问,我总是不得不公开我的基类的每个属性?