2017-03-17 86 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

相关问题