0

我想将 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 吗?

4

1 回答 1

0

并非没有一些非常糟糕的黑客行为,这需要编写一些代码来设置附加属性和其他绑定。问题是任何绑定都有两个端点:目标和源。由于目标(设置绑定的位置)必须是 DependencyProperty,这意味着您的模型必须位于您尝试执行的绑定的源端。就设置值而言,这不是问题,因为 TwoWay 和 OneWayToSource 绑定可以很好地做到这一点。

您有一个更大的问题,因为值来自的原始位置 (TextBlock.Text) 已经分配了绑定,因此不能成为模型绑定的目标。接下来您可能想尝试使用另一个 UIElement 属性作为中介来获取 Text 值并将其推送到模型。为此,您需要再次将模型作为源,并将其他 UIElement 属性作为目标。但是同样的属性也需要成为绑定到您尝试提取的原始 Text 属性的目标,因此您再次陷入困境。

底线是你最好在你的模型和视图模型层中处理这个,而不是试图强迫你在 XAML 中设置的东西来驱动一切。

于 2013-04-12T13:03:19.940 回答