我要求根据登录我的应用程序的用户,我需要显示不同的视图。如何使用datatemplates实现这一目标?
谢谢, Jithu
答案 0 :(得分:0)
假设您的WPF项目的根目录中有资源字典,就像每个用户组/类型一样:
其中包含DataTemplates:
<!-- UserOneResources.xaml -->
<DataTemplate DataType="{x:Type s:String}">
<TextBlock Text="{Binding .}" />
</DataTemplate>
<!-- UserTwoResources.xaml -->
<DataTemplate DataType="{x:Type s:String}">
<TextBox Text="{Binding .}" />
</DataTemplate>
然后在App.xaml.cs的构造函数中,您可以为当前用户类型选择适当的资源字典,如下所示:
public App()
{
string resourceDictionaryToUse;
if (user.Type = UserType.One)
{
resourceDictionaryToUse = "UserOneResources.xaml";
}
else
{
resourceDictionaryToUse = "UserTwoResources.xaml";
}
var rd = new ResourceDictionary() { Source = new Uri("pack://application:,,,/" + resourceDictionaryToUse) };
this.Resources.MergedDictionaries.Add(rd);
}
希望这有帮助。