【发布时间】:2011-02-05 12:32:09
【问题描述】:
我有一个 Silverlight 应用程序 (MVVM),其视图将由应用程序中的多个角色使用,视图中某些 ui 控件的可访问性取决于用户角色。这应该如何在视图模型中进行管理?有没有我应该考虑的对象模式?
任何想法/指导将不胜感激。
【问题讨论】:
标签: c# mvvm silverlight-4.0
我有一个 Silverlight 应用程序 (MVVM),其视图将由应用程序中的多个角色使用,视图中某些 ui 控件的可访问性取决于用户角色。这应该如何在视图模型中进行管理?有没有我应该考虑的对象模式?
任何想法/指导将不胜感激。
【问题讨论】:
标签: c# mvvm silverlight-4.0
想到的第一个想法是在您的 ViewModel 中具有与当前用户是否具有执行某些操作的能力相对应的属性。例如:
public bool CanChangeDisplayName {
get {
bool result = SomeMechanismToDetermineUsersAbilityToPerformAction();
return result;
}
}
然后您可以将视图上相应控件上的IsEnabled(或IsReadOnly 或Visibility)属性绑定到此属性。喜欢:
<TextBox IsReadOnly="{Binding CanChangeDisplayName}" Text="{Binding DisplayName}"/>
我希望这会有所帮助!
【讨论】:
特定于角色的视图部分可能在某种容器(网格、堆栈面板、tabitem 等)中,如果是这种情况,那么我认为您的解决方案将取决于您为 Visibility 属性设置的绑定.
您将创建一个应用程序范围的静态资源,以方便当前用户调用 IsInRole。在您的绑定中,您必须引用一个转换器(从 bool 变为可见性),并且在那里您可以传递您正在测试的角色的名称。
【讨论】: