C# 带有自定义控件的简单WPF事件问题
我正在制作一个名为“ShardButton”的自定义按钮,它使用一种样式来控制其内容及其事件触发器:C# 带有自定义控件的简单WPF事件问题,c#,wpf,events,C#,Wpf,Events,我正在制作一个名为“ShardButton”的自定义按钮,它使用一种样式来控制其内容及其事件触发器: <Style x:Key="ButtonStyle" TargetType="{x:Type obj:ShardButton}"> <Setter Property="Template"> <Setter.Value> <ControlTemplate TargetType="{x:Type obj:Sha
<Style x:Key="ButtonStyle" TargetType="{x:Type obj:ShardButton}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="{x:Type obj:ShardButton}">
<Grid>
<Path .../>
<ContentPresenter HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
RecognizesAccessKey="True"/>
</Grid>
<ControlTemplate.Triggers>
<EventTrigger RoutedEvent="ButtonBase.Click">
!!!SOMETHING HERE!!!
</EventTrigger>
</ControlTemplate.Triggers>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
!!!这里有东西!!!
我在主Window1.XAML文件中使用上述XAML,并为“obj”名称空间创建一个xmlns,所以我想做的是在ShardButton类上调用一个自定义事件处理方法,我如何在XAML中做到这一点
我似乎找不到正确的方式来形容谷歌搜索
谢谢你能给我的任何帮助
标记您不能直接在EventTriggers中执行事件处理程序,它们不是为此目的创建的 但是,如果ShardButton的每个实例在单击时都必须执行相同的操作,只需重写ShardButton类中的OnClick方法,并在此处执行您必须执行的操作 如果您不希望此行为,而是希望为每个使用Window1.xaml中定义的特定样式的ShardButton实例执行特定的处理程序,请添加另一个setter:
<Setter Property="Command" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type obj:Window1}}, Path=MyCommand}" />
其中MyCommand是Window1的实例属性,返回将调用处理程序的ICommand的自定义实现。这行代码假定每个使用此样式的按钮都位于Window1的可视树中的某个位置,这可能就是这种情况(或者样式将在其他位置定义)。您不能直接在EventTriggers中执行事件处理程序,它们不是为此目的创建的 但是,如果ShardButton的每个实例在单击时都必须执行相同的操作,只需重写ShardButton类中的OnClick方法,并在此处执行您必须执行的操作 如果您不希望此行为,而是希望为每个使用Window1.xaml中定义的特定样式的ShardButton实例执行特定的处理程序,请添加另一个setter:
<Setter Property="Command" Value="{Binding RelativeSource={RelativeSource AncestorType={x:Type obj:Window1}}, Path=MyCommand}" />
其中MyCommand是Window1的实例属性,返回将调用处理程序的ICommand的自定义实现。这行代码假定使用此样式的每个按钮都位于Window1的可视树中的某个位置,这可能就是这种情况(或者样式将在其他位置定义)。您可以在
样式中使用事件设置器
:
<Style ...>
<EventSetter Event="Click" Handler="yourHandlerMethod"/>
</Style>
您可以在样式中使用事件设置器
:
<Style ...>
<EventSetter Event="Click" Handler="yourHandlerMethod"/>
</Style>
谢谢因此,MyCommand返回了一个ICommand实现,但是如何返回单击按钮的OnClick方法呢?我不确定是否正确理解了您的评论。如果你在ShardButton上直接覆盖OnClick(每个按钮通用的命令),你不必使用任何命令,这是第二种情况(特定于样式的命令)。啊,我明白你的意思了,我错过了你的帖子。谢谢你的澄清,谢谢!因此,MyCommand返回了一个ICommand实现,但是如何返回单击按钮的OnClick方法呢?我不确定是否正确理解了您的评论。如果你在ShardButton上直接覆盖OnClick(每个按钮通用的命令),你不必使用任何命令,这是第二种情况(特定于样式的命令)。啊,我明白你的意思了,我错过了你的帖子。谢谢你的澄清。嗨,肯特,问题是我需要在另一个类中使用该方法,在本例中是ShardButton,它扩展了Button。嗨,肯特,问题是我需要在另一个类中使用该方法,在本例中是ShardButton,它扩展了Button。