如何在MVVM中将控件绑定到VisualBrush?

3

我有一个视觉画刷,我想将其视觉元素设置为一个元素。以下是我的实例:

<VisualBrush Viewport="0,0,0.5,0.5" Visual="{Binding ElementName=Panel}"></VisualBrush>

然而,我希望在Visual中更改值,以便在不同的时间显示不同控件的可视化效果。我的第一个想法是使用以下代码:
Visual="{Binding ElementName={Binding VisElName}}"

首先,这是不允许的,其次我的视图模型需要知道我的元素的名称。在MVVM中有没有一种方法可以做到这一点,以便我可以随意将可视化更改为另一个元素?

1个回答

0

这有点取决于驱动视觉变化的实际逻辑。例如,如果它与业务逻辑相关的状态有关,您可以在视图模型中公开一个State属性,并使用转换器进行绑定。

如果它不依赖于业务逻辑状态,从视图的代码后台修改视觉效果在MVVM方面是可以接受的,因为它被认为是纯粹的视图逻辑:

XAML

<VisualBrush x:Name="myBrush" Viewport="0,0,0.5,0.5" />

代码后台
myBrush.Visual = myPanel;

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接