我想繪製一條線,當我雙擊它時,我想在其上放置文本。我正在考慮將它放在內容控件中並繪製一條線,將頂部的摺疊文本框放在上面,檢測到雙擊,顯示文本框將其設置爲文本塊等。我碰到的唯一問題是我不知道該怎麼做設置線的座標,因爲它位於contentcontrol內部,所以繪製了一條實際的線。我一直堅持幾個小時,任何幫助將不勝感激。帶有文本框的連接器行,綁定問題
基本上我需要一個具有開始和結束點屬性的對象,它具有線條形狀,並帶有內容展示器。但我不知道如何去做這件事。任何指針將不勝感激。
我想繪製一條線,當我雙擊它時,我想在其上放置文本。我正在考慮將它放在內容控件中並繪製一條線,將頂部的摺疊文本框放在上面,檢測到雙擊,顯示文本框將其設置爲文本塊等。我碰到的唯一問題是我不知道該怎麼做設置線的座標,因爲它位於contentcontrol內部,所以繪製了一條實際的線。我一直堅持幾個小時,任何幫助將不勝感激。帶有文本框的連接器行,綁定問題
基本上我需要一個具有開始和結束點屬性的對象,它具有線條形狀,並帶有內容展示器。但我不知道如何去做這件事。任何指針將不勝感激。
我們對標記連接的做法也是如此。如果你通過一條路徑繪製連接,你可以使用
LineGeometry.GetPointAtFractionLength(0.5, out midPoint, out tangetMidPoint);
這樣你就可以在幾何體上獲得中心位置。現在您可以將其存儲到您用於定位標籤的依賴項屬性中。當然,每當你的形狀/幾何形狀改變其位置或大小時,就必須調用它。
這是一個控制的小例子。
public class LabeledLine : ContentControl
{
public static readonly DependencyProperty LabelPosition ...
public static readonly DependencyProperty LineGeometry ...
// call me everytime the LineGeometry gets changed.
public void UpdatePath()
{
LineGeometry.GetPointAtFractionLength(0.5, out midPoint, out tangetMidPoint);
LabelPosition = midPoint;
}
}
你的控件模板看起來類似的東西
<ControlTemplate TargetType="{x:Type local:LabeledLine}">
<Canvas x:Name="canvas">
<Path Data="{TemplateBinding LineGeometry}"/>
<TextBox Canvas.Left="{TemplateBinding LabelPosition.X}" Canvas.Top="{TemplateBinding LabelPosition.Y}"/>
</Canvas>
<ControlTemplate/>
現在添加ContentControl
功能,你可以代替文本框的添加ContentPresenter。
基本上我需要與 具有線
對於形狀只是添加2個DP屬性爲您的2個位置的開始和結束點屬性的對象。確保添加一個依賴屬性更改處理程序來調用UpdatePath方法。
好的,謝謝我會給它一個鏡頭。 – mihajlv