2013-12-17 16 views
0

我試着去借鑑與Windows Phone的帆布手指一條線,我做這個,但是當我嘗試刪除/清除該行它移除所有的元素在畫布,如何在Windows Phone 8的內部帆布抽頭點刪除線?

ContentPanelCanvas.Children.Clear(); 

聽到的是我的完整代碼:

XAML

<Canvas x:Name="ContentPanelCanvas" Grid.Row="1" Background="Transparent" Margin="12,0,12,0"> 

     <Grid Width="450" Height="600"> 
     <Button x:Name="clickMeBtn" Height="72" 
       Width="200" 
       Content="Click Me" 
       HorizontalAlignment="Center" 
       VerticalAlignment="Center" Click="clickMeBtn_Click" /> 
     </Grid> 
    </Canvas> 

C#代碼是這樣的:

public MainPage() 
    { 
     InitializeComponent(); 
     this.ContentPanelCanvas.MouseMove += new MouseEventHandler(ContentPanelCanvas_MouseMove); 
     this.ContentPanelCanvas.MouseLeftButtonDown += new MouseButtonEventHandler(ContentPanelCanvas_MouseLeftButtonDown); 
    } 

    void ContentPanelCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
    { 
     currentPoint = e.GetPosition(ContentPanelCanvas); 
     oldPoint = currentPoint; 
    } 

    void ContentPanelCanvas_MouseMove(object sender, MouseEventArgs e) 
    { 

      currentPoint = e.GetPosition(this.ContentPanelCanvas); 

      line = new Line() { X1 = currentPoint.X, Y1 = currentPoint.Y, X2 = oldPoint.X, Y2 = oldPoint.Y }; 
      line.Stroke = new SolidColorBrush(Colors.White); 
      line.StrokeThickness = 10; 
      this.ContentPanelCanvas.Children.Add(line); 
      oldPoint = currentPoint; 
    } 

    private void clickMeBtn_Click(object sender, RoutedEventArgs e) 
    { 
     MessageBox.Show("Hello Every One "); 
     ContentPanelCanvas.Children.Clear(); 

    } 

代碼正在執行沒有錯誤,但它正在刪除按鈕,我如何只刪除我畫的線

回答

1

那麼,代碼正在做你寫的東西,它是清除ContentPanelCanvas的所有孩子。如果你只是想刪除線,那麼只有刪除線:

foreach (var line in ContentPanelCanvas.Children.OfType<Line>().ToList()) 
    ContentPanelCanvas.Children.Remove(line); 
+0

Thanks..It的工作.. –

+0

大刪除控件,請把它標記爲一個答案然後別人知道。 –

+0

我使用了Silverlight的wp8.1。我可以從一條線,而不是全線刪除一個點或部分。另外我有一個畫布的背景圖像。 –

1

您可以使用

ContentPanelCanvas.Children.Remove(Line); 

或者如果清除畫布它由指數

ContentPanelCanvas.Children.RemoveAt(1); 
1

清除患兒將「Removes all elements從UIElementCollection。」

您應該創建線例如自來水事件處理的事件處理程序,一旦點擊您要在另一個控制壓陣控制去掉,然後在按鈕單擊處理程序將其刪除這樣

ContentPanelCanvas.Children.Remove(controlToDelete); 

controlToDelete是您持有的管道分支接頭處理即行控制