c# - 如何将控件绑定(bind)到 MVVM 中的 visualbrush?

标签 c# wpf mvvm binding

我有一个视觉画笔,我想在其中将视觉对象设置为一个元素。我的视觉画笔的当前示例:

<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/

相关文章:

c# - 将文件上传到 Blob Azure

WPF 异常 WindowStyle.None

c# - ElasticSearch NEST聚合

c# - 将 TSQL 转换为 Linq to Entities

C# 内联 lambda 评估

C# WPF 禁用退出/关闭按钮

c# - 集合更改时未更新 GroupStyle header 中的绑定(bind)

windows-phone-7 - Windows 手机 MVVM : Button Command Can Execute and Command Paramtere

wpf - 对象发送者在 RelayCommand 中始终为空

.net - MVVM View 模型 DTO