【发布时间】:2013-04-04 20:31:41
【问题描述】:
我想将 TextBlock 的 Text 属性绑定到一些元素和一些模型的属性。像这样的:
<TextBlock>
<TextBlock.Text>
<MultiBinding>
<Binding ElementName="myElement1" Mode="OneWay" Path="Text" />
<Binding ElementName="myElement2" Mode="OneWay" Path="Text" />
<Binding Mode="OneWay" Path="Property1" />
<Binding Mode="OneWay" Path="Property2" />
</MultiBinding>
</TextBlock.Text>
</TextBlock>
TextBlock 有一个文本值,由 myElement1、myElement2 和 Property1、Property2 组合而成。没有问题。文本值生成成功。
这是我的问题:
我可以将 TextBlock 的整个(组合)文本值绑定到另一个模型的属性,即 Property3,而无需代码吗?
【问题讨论】:
-
如果您使用 MVVM,我认为您不应该将自己编程到这种情况下。视图模型应该单独暴露和绑定到这些项目,而不是依赖视图来提供连接数据。 View 应该使用 MultiBinding 以各种格式“呈现”数据,但这与将数据放在一起并将其返回给 View-Model 不同。在 View 不再只是数据的 Presenter 的实现中,责任分离就消失了。
-
是的,完全同意 Viv - 这不是你希望你的视图做的事情 - 如果需要,模型应该将连接的数据作为属性公开(不要从视图中获取它)。
标签: wpf textblock multibinding