【发布时间】:2010-11-30 18:58:25
【问题描述】:
是否可以构建一个 WPF UserControl SegmentControl,具有类似于线条形状坐标(X1,Y1)和(X2,Y2)?
我已经构建了一个自定义 Line Shape,但我需要一个 UserControl,因为我添加了一些额外的可自定义元素,例如文本和项目符号。
我编写了一些代码,但认为我需要帮助:
<UserControl>
<!-- internal Canvas; The UsrCtrl Parent is supposed to be a Canvas too -->
<Canvas>
<Line x:Name="line" Stroke="Black" StrokeThickness="1"></Line>
<Label x:Name="label" Content="Paris - Moscow"/>
</Canvas>
</UserControl>
*.cs
public partial class SegmentControl : UserControl
{
#region dependency properties
public static readonly DependencyProperty X1Property;
...
static void OnXYChanged(DependencyObject source, DependencyPropertyChangedEventArgs e)
{
SegmentControl s = source as SegmentControl;
UpdateControlPositionAndSize(s);
}
static void UpdateControlPositionAndSize(SegmentControl sc)
{
double left = Math.Min(sc.X1, sc.X2);
double top = Math.Min(sc.Y1, sc.Y2);
double width = sc.X2 - sc.X1;
double height = sc.Y2 - sc.Y1;
Canvas.SetLeft(sc, left);
Canvas.SetTop(sc, top);
sc.Width = width;
sc.Height = height;
sc.line.X1 = sc.X1; // ??
sc.line.Y1 = sc.Y1; // ??
sc.line.X2 = sc.X2; // ??
sc.line.Y2 = sc.Y2; // ??
}
【问题讨论】:
-
X1 Y1 和 X2 Y2 在这种情况下是什么意思?它们是否在您的控制范围内您的分段坐标?
-
@Nicolas Repiquet x1、y1、x2 和 y2 的含义与 Line 形状的含义相同。线的坐标(在我的画布的具体情况下)“极端”点。
标签: .net wpf user-controls