WPF中的动态数据模板

时间:2009-07-27 18:26:45

标签: wpf datatemplate

我要求根据登录我的应用程序的用户,我需要显示不同的视图。如何使用datatemplates实现这一目标?

谢谢, Jithu

1 个答案:

答案 0 :(得分:0)

假设您的WPF项目的根目录中有资源字典,就像每个用户组/类型一样:

  • UserOneResources.xaml
  • UserTwoResources.xaml
  • ...

其中包含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);
}

希望这有帮助。