【发布时间】:2016-06-29 08:24:38
【问题描述】:
我看到一个奇怪的行为在我无法解释的 Canvas 上以线条形状拖动。 Line 形状在 Thumb DataTemplate 中,如下所示:
<DataTemplate DataType="{x:Type vm:MyLine}">
<Thumb DragDelta="Thumb_DragDelta">
<Thumb.Template>
<ControlTemplate TargetType="Thumb">
<Line Fill="LightBlue" StrokeThickness="2" Y1="{Binding Y1}" Y2="{Binding Y2}" X1="{Binding X1}" X2="{Binding X2}" Stroke="LightBlue" x:Name="Line"/>
</ControlTemplate>
</Thumb.Template>
</Thumb>
</DataTemplate>
画布是ItemsPanelTemplate 的ListBox。在ListBox.ItemContainerStyle 中没有Canvas.Top 或Canvas.Left 绑定或设置器。宽度和高度也没有绑定。
Canvs 上的线条正在拖动,但它偏离了鼠标位置。相当狂野和快速。
在代码后面拖拽有效果:
line.X1 += e.HorizontalChange; line.X2 += e.HorizontalChange;
line.Y1 += e.VerticalChange; line.Y2 += e.VerticalChange;
X..Y 的 setter 提升 PropertyChanged 否则 Line 不会移动。
对于Line 的正确拖动行为我应该怎么做?为什么?Binding Mode=OneWay 没有区别。
【问题讨论】:
-
在不绑定Xs和Ys的情况下试试。只在后面的代码中更改Xs和Ys。
-
@Miro:X,Y 是画线所必需的。
-
但是您正在将 Ys 和 Xs 绑定到它们自己...
-
第一个 X,Y 是 Line 形状的依赖属性。后者是数据上下文的属性。
标签: wpf wpf-controls