【问题标题】:How do I bind a control to visualbrush in MVVM?如何在 MVVM 中将控件绑定到可视画笔?
【发布时间】:2015-10-20 07:25:16
【问题描述】:

我有一个视觉刷,我想将视觉设置为一个元素。我的视觉画笔的当前示例:

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

但是,我想更改 Visual 中的值,以便在不同时间显示不同控件的视觉效果。我的第一个想法是:

Visual="{Binding ElementName={Binding VisElName}}"

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

【问题讨论】:

    标签: c# wpf mvvm binding


    【解决方案1】:

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

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

    XAML

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

    背后的代码

    myBrush.Visual = myPanel;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-25
      • 1970-01-01
      • 2015-02-15
      • 1970-01-01
      相关资源
      最近更新 更多