c# - 是否可以将数据上下文的属性绑定(bind)到另一个数据上下文的属性

标签 c# wpf xaml mvvm

我有一个类,我在控件中使用它来定义颜色:

public class ColorModel : INotifyPropertyChanged {
    public Color Color{ get { ... } set { ... } }
}

我还有一个类,我希望用它来定义双色 LinearGradient Brushes :
public class GradientModel : INotifyPropertyChanged {
    public Color First{ get { ... } set { ... } }
    public Color Last{ get { ... } set { ... } }
}

这两个类都用作负责定义其各自值的控件的 DataContext。

我希望能够使用我定义的 ColorModel 来指示 GradientModel 的 First 和 Last 颜色的值(使用两个单独的控件,每个控件都包含一个 ColorModel 作为 DataContext )。

我正在努力尽可能地遵守 MVVM。

我怎样才能完成这项任务?

最佳答案

实现此目的的另一种方法是定义您的 GradientModel如下:

public class GradientModel : INotifyPropertyChanged {
    public ColorModel First{ get { ... } set { ... } }
    public ColorModel Last{ get { ... } set { ... } }
}

也就是说,而不是将属性定义为 Color , 将它们定义为 ColorModel .然后在构造函数中订阅PropertyChanged事件并相应地更新您的成员。

注意:您必须从 First 更新绑定(bind)路径至First.Color等等。

关于c# - 是否可以将数据上下文的属性绑定(bind)到另一个数据上下文的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35678504/

相关文章:

c# - 上传后不能直接从服务器删除文件

c# - 'unsafe' 作用域的嵌套会影响性能吗?

c# - 将 JavaScript 对象转换为 C# 对象

c# - XAML 代码 IsChecked 在 ToggleButton 上触发

c# - 有没有办法在 ListView 中嵌套分组?或者我必须使用 TreeView 吗?

wpf - 在 MultiBinding 中管理绑定(bind)的 targetType

c# - 如何判断光驱(不是光盘)是 CD 驱动器还是 DVD 驱动器?

c# - Windows 8 桌面多点触控 API

c# - 如何查看 silverlight 项目中部分类的其余部分?

wpf - 自定义平面进度条