WPF命令绑定-如何获取事件处理程序
嗨 有没有办法选择XAML应该在哪里使用命令绑定事件处理程序? 我在cusotm控件中添加了命令绑定的copule,但是,对于execute和can_execute来说,这些函数不是直接在代码后面,而是在另一个类中。这个类是从Canvas派生的,我在XAML中创建了这个类的实例WPF命令绑定-如何获取事件处理程序,wpf,commandbinding,routedevent,routedevents,Wpf,Commandbinding,Routedevent,Routedevents,嗨 有没有办法选择XAML应该在哪里使用命令绑定事件处理程序? 我在cusotm控件中添加了命令绑定的copule,但是,对于execute和can_execute来说,这些函数不是直接在代码后面,而是在另一个类中。这个类是从Canvas派生的,我在XAML中创建了这个类的实例 <s:MyCanvas Focusable="true" Background="Transparent" x:Name="OwnCanvas" FocusVisualStyle="{x:Null}" Scro
<s:MyCanvas Focusable="true" Background="Transparent" x:Name="OwnCanvas" FocusVisualStyle="{x:Null}" ScrollViewer.CanContentScroll="True" >
我以这种方式添加命令绑定
<UserControl.CommandBindings>
<CommandBinding Command="{x:Static ApplicationCommands.Copy}" CanExecute="event handler from object OwnCanvas" />
</UserControl.CommandBindings>
有办法吗?或者我必须直接将事件处理程序转移到codebehind???我认为您必须在codebehind中转移处理程序,因为我认为这是不可能的。我可能是错的,如果可能的话,我希望得到纠正 我通常只是在MyCanvas类(代码隐藏)中定义CommandBinding,然后在自定义控件中将该MyCanvas引用为CommandTarget。像这样:
public MyCanvas()
{
...
CommandBindings.Add(
new CommandBinding(ApplicationCommands.Copy,
(sender, e) => {
// Execute Stuff
},
(sender, e) => {
e.CanExecute = true;
e.Handled = true;
}));
...
}
在自定义控件中(假定它位于MyCanvas的可视树中)
将CommandTarget设置为这样,将对其调用Execute和CanExecute方法。我认为您必须在codebehind中传输处理程序,因为我认为这是不可能的。我可能是错的,如果可能的话,我希望得到纠正 我通常只是在MyCanvas类(代码隐藏)中定义CommandBinding,然后在自定义控件中将该MyCanvas引用为CommandTarget。像这样:
public MyCanvas()
{
...
CommandBindings.Add(
new CommandBinding(ApplicationCommands.Copy,
(sender, e) => {
// Execute Stuff
},
(sender, e) => {
e.CanExecute = true;
e.Handled = true;
}));
...
}
在自定义控件中(假定它位于MyCanvas的可视树中)
将CommandTarget设置为这样,将对其调用Execute和CanExecute方法。您好,谢谢您的回答,但是我需要向整个控件添加命令绑定-我的customControl上没有任何按钮-我的控件仅由MyCanvas组成。有什么方法可以让这个工作,或者我必须将这个命令附加到一些按钮、标签或其他东西上?您好,谢谢您的回答,但是我需要将命令绑定添加到整个控件-我的customControl上没有任何按钮-我的仅由MyCanvas组成。有没有办法让这个工作,或者我必须附加这个命令到一些按钮,标签或其他东西?