我開發一個WPF在C#,我想多次,畫中的特定行,而不會丟失之前的小徑。我有 buttons
裏面我的Grid
和它的時間我按一個我想要一條線被繪製。對於該行,我使用var redLine
,每次按下按鈕時,它都會收到一對特定的座標。繪製同一行多次,而不會丟失以前的小徑
我使用此代碼畫線:
public partial class MainWindow : Window {
private Line redLine = new Line();
SolidColorBrush redBrush = new SolidColorBrush(Colors.Red);
public MainWindow()
{
redLine.StrokeThickness = 4;
redLine.Stroke = redBrush;
}
private void button1_Click(object sender, RoutedEventArgs e) {
redLine.X1 = 237;
redLine.Y1 = 382;
redLine.X2 = 288;
redLine.Y2 = 409;
//draw the line
MainGrid.Children.Add(redLine);
}
private void button2_Click(object sender, RoutedEventArgs e) {
redLine.X1 = 130;
redLine.Y1 = 323;
redLine.X2 = 238;
redLine.Y2 = 690;
//draw the line
MainGrid.Children.Add(redLine);
}
}
但每次我按button1
然後button2
我得到這個錯誤(這也恰好爲這些按鈕的其餘部分):
錯誤指定的Visual已經是另一個視覺的子元素或 CompositionTarget的根。
我確實想保留兩條線,而不是刪除第一條,以便繪製第二條。任何想法如何解決它?
注意我不想在每個buttonX_Click方法中聲明每行(在整個程序中大約有11行)。
_「我不想在每個buttonX_Click方法中聲明每一行(整個程序中大約有11行)。」_爲什麼不呢?這可能會解決問題。是純粹的,所以你不必重複寬度/畫筆等的實例化/設置? –
它不應該是'CheckBox'es顯示/隱藏線?在WPF中,您可以使用數據模板來可視化項目集合(在您的案例行中)。請參閱[this](http://stackoverflow.com/a/23564452/1997232)。只需將新項目添加到集合中,即可在視圖中顯示新行。 – Sinatr
@JamesThorpe從編程角度來看,我沒有發現它是「正確的」,一次又一次地聲明每一行。 –