我有两个自定义控件,类似于节点和绘制节点之间链接的控件。将属性数据绑定到两个依赖项属性
我想尽可能在xaml中写入尽可能多的控件。链接将这两个节点存储为依赖项属性,并且每当节点移动时,我都使用数据绑定来移动节点之间的连线。
根据两个节点之间的距离,能够改变线条的某些其他值,例如笔画宽度,将会很棒。所以当任何一个节点移动时,属性都需要更新,而且我无法理解这种方式的效果。
任何人有任何想法?
我有两个自定义控件,类似于节点和绘制节点之间链接的控件。将属性数据绑定到两个依赖项属性
我想尽可能在xaml中写入尽可能多的控件。链接将这两个节点存储为依赖项属性,并且每当节点移动时,我都使用数据绑定来移动节点之间的连线。
根据两个节点之间的距离,能够改变线条的某些其他值,例如笔画宽度,将会很棒。所以当任何一个节点移动时,属性都需要更新,而且我无法理解这种方式的效果。
任何人有任何想法?
,你可以尝试做这样的事情:
< Multibinding转换器= “{StaticResource的转换器}” >
<绑定路径= “节点1” 的RelativeSource |源.../>
<绑定路径= “节点2” .../>
</Multibinding >
实现接口IMultiValueConverter,基本上根据节点之间的距离来计算笔画看起来应该是什么样子。
在xaml中创建转换器的实例,并将其添加到您的多重绑定的Converter属性中。
这个解决方案的优点是,你有非常清晰的类模型,每个类都做简单的任务。此外,稍后,您可以配置转换器类以支持额外的情况,而不需要接触节点类,该节点类保持简单并且仅为显示节点而设计。
一般来说,无论何时必须将多个属性值映射到另一个属性,都必须使用多重绑定和转换器。
您可以在链接类中定义一个属性StrokeWidth,每当节点移动时计算该属性的StrokeWidth,然后将适当的样式属性绑定到它。
我想你也可以尝试使用DataTriggers做些事情,但他们需要特定的值来处理 - 你不能使用任何类型的表达式。这会使解决方案很难很好地适应节点之间的广泛距离。
我目前在xaml中的代码隐藏和数据绑定中使用了一个属性。当任一节点移动时,他们会告诉任何链接要更新。尽管对WPF没有经验,但它并不是最优雅的解决方案。 – tenpn 2008-09-20 22:33:06