Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在MVVM中将控件绑定到visualbrush?_C#_Wpf_Mvvm_Binding - Fatal编程技术网

C# 如何在MVVM中将控件绑定到visualbrush?

C# 如何在MVVM中将控件绑定到visualbrush?,c#,wpf,mvvm,binding,C#,Wpf,Mvvm,Binding,我有一个visualbrush,我想在其中设置元素的视觉效果。我的视觉笔刷的当前示例: <VisualBrush Viewport="0,0,0.5,0.5" Visual="{Binding ElementName=Panel}"></VisualBrush> 但首先,这是不允许的,其次,我的视图模型需要知道元素的名称。在MVVM中有没有一种方法可以做到这一点,这样我就可以随意将可视化更改为另一个元素?这取决于驱动可视化更改的实际逻辑。例如,如果它是某种与业务逻辑相关

我有一个visualbrush,我想在其中设置元素的视觉效果。我的视觉笔刷的当前示例:

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

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

这取决于驱动可视化更改的实际逻辑。例如,如果它是某种与业务逻辑相关的状态,则可以在视图模型中公开
状态
属性,并使用转换器绑定到该属性

如果它不依赖于BL状态,那么MVVM明智的做法是从视图的代码后面修改可视化,因为它被认为是纯粹的视图逻辑:

XAML

Visual="{Binding ElementName={Binding VisElName}}"
<VisualBrush x:Name="myBrush" Viewport="0,0,0.5,0.5" />
myBrush.Visual = myPanel;