我有一个视觉画笔,我想在其中将视觉对象设置为一个元素。我的视觉画笔的当前示例:
<VisualBrush Viewport="0,0,0.5,0.5" Visual="{Binding ElementName=Panel}"></VisualBrush>
但是,我想改变Visual中的值,以便在不同的时间,它可以显示不同控件的视觉效果。我的第一个想法是:
Visual="{Binding ElementName={Binding VisElName}}"
但首先这是不允许的,其次我的 View 模型需要知道我的元素的名称。有没有办法在 MVVM 中执行此操作,以便我可以随意将视觉更改为另一个元素?
最佳答案
这在某种程度上取决于插入视觉变化的实际逻辑是什么。例如,如果它是某种与业务逻辑相关的状态,您可以在 View 模型中公开一个 State
属性并使用转换器绑定(bind)到它。
如果它不依赖于 BL 状态,那么从 View 背后的代码修改视觉效果在 MVVM 方面是可以的,因为它被认为是纯粹的 View 逻辑:
XAML
<VisualBrush x:Name="myBrush" Viewport="0,0,0.5,0.5" />
代码隐藏
myBrush.Visual = myPanel;
关于c# - 如何将控件绑定(bind)到 MVVM 中的 visualbrush?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31698335/