C# 将属性数据绑定到两个依赖项属性之一

C# 将属性数据绑定到两个依赖项属性之一,c#,wpf,data-binding,xaml,C#,Wpf,Data Binding,Xaml,我有两个类似于节点的自定义控件和在节点之间绘制链接的控件 我希望这两个控件尽可能多地使用xaml编写。链接将这两个节点存储为依赖属性,每当节点移动时,我都使用数据绑定来移动节点之间的线 如果能够根据两个节点之间的距离来更改线条的其他值,例如笔划宽度,那将是非常棒的。因此,当任何一个节点移动时,属性都需要更新,我无法完全理解这将如何工作 有人有什么想法吗?您可以在链接类中定义一个属性StrokeWidth,每次节点移动时都会计算该属性,然后将相应的样式属性绑定到该属性 我想您也可以尝试使用Data

我有两个类似于节点的自定义控件和在节点之间绘制链接的控件

我希望这两个控件尽可能多地使用xaml编写。链接将这两个节点存储为依赖属性,每当节点移动时,我都使用数据绑定来移动节点之间的线

如果能够根据两个节点之间的距离来更改线条的其他值,例如笔划宽度,那将是非常棒的。因此,当任何一个节点移动时,属性都需要更新,我无法完全理解这将如何工作


有人有什么想法吗?

您可以在链接类中定义一个属性StrokeWidth,每次节点移动时都会计算该属性,然后将相应的样式属性绑定到该属性


我想您也可以尝试使用DataTriggers,但它们需要使用特定的值—您不能使用任何类型的表达式。这将使解决方案很难很好地扩展到节点之间的一系列距离。

您可以在链接类中定义一个属性StrokeWidth,该属性在节点每次移动时计算,然后将相应的style属性绑定到该属性


我想您也可以尝试使用DataTriggers,但它们需要使用特定的值—您不能使用任何类型的表达式。这将使解决方案难以很好地扩展到节点之间的广泛距离。

您可以尝试这样做:

  • 和前面的文章一样,在链接类上定义宽度、笔划(无论您需要什么)属性
  • 定义应用于该属性的多重绑定,将两个节点传递给该绑定 它应该是这样的:



  • 实现接口IMultiValueConverter,它将根据节点之间的距离基本计算笔划的外观

  • 在xaml中,创建转换器的实例,并将其添加到多重绑定的转换器属性中

  • 此解决方案的优点是,您有非常清晰的类模型,并且每个类都执行简单的任务。此外,稍后,您可以将转换器类配置为支持额外的情况,而无需接触节点类,节点类保持简单,仅用于显示节点


    通常,当您必须将多个属性值映射到另一个属性时,您必须使用多重绑定和转换器。

    您可以尝试这样做:

  • 和前面的文章一样,在链接类上定义宽度、笔划(无论您需要什么)属性
  • 定义应用于该属性的多重绑定,将两个节点传递给该绑定 它应该是这样的:



  • 实现接口IMultiValueConverter,它将根据节点之间的距离基本计算笔划的外观

  • 在xaml中,创建转换器的实例,并将其添加到多重绑定的转换器属性中

  • 此解决方案的优点是,您有非常清晰的类模型,并且每个类都执行简单的任务。此外,稍后,您可以将转换器类配置为支持额外的情况,而无需接触节点类,节点类保持简单,仅用于显示节点


    通常,当您必须将多个属性值映射到另一个属性时,您必须使用多重绑定和转换器。

    我当前在代码隐藏中使用一个属性,并在xaml中对其进行数据绑定。当任一节点移动时,它们会通知所有链接进行更新。尽管我对WPF缺乏经验,但它并不是最优雅的解决方案。我目前在代码隐藏中使用一个属性,并在xaml中对其进行数据绑定。当任一节点移动时,它们会通知所有链接进行更新。尽管缺乏WPF方面的经验,但它并不是最优雅的解决方案。