0

有些事情告诉我,我可能会因为问这个而被处以私刑。对于事先冗长的描述,我们深表歉意。

我正在研究 Silverlight 4 项目中的一个角落案例。本质上,我正在构建的是一个自定义表单构建器。

一个表单可能有几个字段,这些字段可能是不同类型的(文本、整数、电子邮件等)。现在,所有这些类型都扩展了Field类,但在文本字段的情况下可能具有其他属性,例如长度。

我有能力从FieldViewModels我的FormFieldsManagementViewModel. 所以到目前为止,这都是非常标准的东西。

现在,UserControl... DataTemplateSo , to clarify, the UserControlhas a SingleLineTextTemplateproperty which will be shown when a SingleLineTextFieldViewModelis selected but when an EmailFieldViewModelis selected, the EmailFieldTemplateis shown. SingleLineTextFieldViewModel和继承EmailFieldViewModelFieldViewModel

当我在每个模板中声明绑定时,我的问题就出现了。FieldViewModel设置基类的属性是非常有效的(恕我直言)IsRequired,但我也有与 .的Length 属性匹配的Position绑定。所以我依赖于具体类的扩展接口而不仅仅是类。LengthSingleLineTextTemplateSingleLineTextFieldViewModelFieldViewModel

我应该指出,在我继续说这有效之前。我不确定它会,现在确实如此,我不确定它应该,..或者我什至应该这样做。

我这样做只是为了绑定,并且没有绑定到动态对象和/或DataTemplateSelectorSilverlight 中没有绑定。

显然,在绑定场景中SingleLineTextFieldViewModel不能替代它的基类。我的问题是,因为我并没有真正在代码中使用这些对象,而是在标记中,..这仍然被认为是不好的做法吗?

提前非常感谢。

4

1 回答 1

1

我对此没有任何问题 - 我过去做过相同或类似的事情。

假设你只使用你SingleLineTextTemplateDataContext实例SingleLineTextFieldViewModel(大概是通过映射DataTemplate到类型)那么永远不会有任何问题,并且由于绑定框架的弹性特性,即使你不会有任何显着的负面影响您确实尝试将模板用于不合适的类型。

于 2011-10-07T10:37:59.700 回答