Silverlight 4 + Prism在运行时创建控件

时间:2011-02-19 09:44:23

标签: silverlight mvvm user-controls prism

我正在创建一个Silverlight 4应用程序来管理活动目录对象(CRUD用户,组等)。现在我们都知道活动目录对象有很多属性。 我想在某些AD对象类型(用户,组等)的SQL DB(即samaccountname,mail等)中保存一些属性名称组。 当silverlight应用程序中的用户点击“创建用户”时,我想

  1. 获取我在sql db中为用户
  2. 定义的所有属性名称
  3. 为每个属性创建一个预定义的silverlight控件,并将其添加到当前的“create view”
  4. 能够读取用户在控件中输入的所有值并将其传递给
  5. 用户控件因Active Directory属性的类型而异,即对于具有日期时间值的属性,我们将使用日历创建用户控件。这样我们就可以保持“创建”视图的动态。

    Silverlight / Prism基础已经存在,我正在通过RegionManager添加我的视图。一切正常但我不确定如何以动态的方式添加控件,它仍然适用于PRISM和MVVM模式。感谢您的任何意见。

1 个答案:

答案 0 :(得分:0)

我将假设你很乐意从db中获取属性并保存值,并专注于创建MVVM的中间区域。

PRISM部分我不担心。你说你已经向区域经理注册了这些意见,而这就是你需要做的所有事情。

我最初的想法是如何在运行时使用MVVM“创建”控件。创建控件并不是困难的部分,但需要处理将要注入的元素,例如根网格。这表面上感觉非MVVM。我个人认为以旧方式完成“视图”代码是有效的,它是绑定中使用的“数据”代码,应该是MVVM。问题是告诉代码将控件注入实际注入的内容。我想不出一个干净利落的方法。

作为一个解决方案,你不能创建一个视图,其中包含适用于每个属性的所有控件,而不是在需要时“创建”它们,在不需要时“隐藏”它们吗?您可以将“Visibility”属性(可能通过值转换器)绑定到ViewModel中的属性,该属性可用于确定是否应显示该特定控件。如果将这些放置在堆栈面板中,则视图将动态缩小。

如果您认为代码示例有助于我了解。