2017-03-17 71 views
0

我對此非常如何通過鼠標按下選擇ContentControl中和DEL鍵

<Canvas x:Name="DesignerCanvas" Grid.ColumnSpan="9" 
     Grid.RowSpan="2" Grid.Row="3" Grid.Column="1" Margin="0.013,10,0.027,0" > 

</Canvas> 

用帆布WPF應用程序通過後臺代碼,我加入了一些ContentControl中的項目中刪除它

ContentControl myContentControl = new ContentControl();    
myContentControl.Content = ACimage; 
myContentControl.MouseLeftButtonDown += MyContentControl_MouseLeftButtonDown;    
DesignerCanvas.Children.Add(myContentControl); 

現在我想能夠:

  1. 選擇ContentControl中使用鼠標點擊

    private void MyContentControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) { ContentControl myContentControl = sender as ContentControl; myContentControl.Focus(); myContentControl.SetValue(Selector.IsSelectedProperty, true); } 由於某些原因,點擊不會觸發MyContentControl_MouseLeftButtonDown事件。有任何想法嗎?

    1. 使用鍵盤上的刪除鍵刪除ContentControl。

請問有人指點方向嗎?

非常感謝。

+0

在myContentControl上添加一個輸入綁定,然後將焦點設置爲true ...一旦你點擊它並按下刪除它就會觸發你選擇的任何方法作爲輸入綁定方法 –

回答

1

所以對於1)你可以做的就是添加一個MouseLeftButtonDown事件處理程序是這樣的:

myContentControl.MouseLeftButtonDown += MyContentControl_MouseLeftButtonDown; 

private void MyContentControl_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
{ 
    myContentControl.Focus(); 
    //Do what you want when the ContentControl is clicked. 
} 

你可以專注於ContentControl中,然後做你需要的事件。

對於2)您可以在ContentControl中使用KeyDown事件是這樣的:

myContentControl.KeyDown += MyContentControl_KeyDown; 

private void MyContentControl_KeyDown(object sender, System.Windows.Input.KeyEventArgs e) 
{ 
    if (e.Key == Key.Delete) 
    { 
     //Do what you need. 
    } 
} 

,並在其中你檢查按下的鍵是刪除按鈕,然後你可以做你需要什麼。

+0

謝謝你的幫助。我對WPF/C#領域頗爲陌生。還有一件事,我應該在畫布上放置什麼事件來激活ContentControl的選擇?再次感謝你? – khuang

+0

如果您只需在代碼中添加這兩個事件,就不需要在畫布上放置任何東西。這就是mouseLeftButtonDown在@khuang所做的事情。 – CNuts

+0

mouseLeftButtonDown事件所做的是當某人將左鍵單擊contentControl時,該事件將調用相關函數,並在那裏執行您需要的@khuang。 – CNuts

相關問題