在我的模板控件中,我有一个按钮和一个椭圆。我用Interaction.Behavior添加了点击事件。按钮工作正常。但是Ellipse从来不会触发事件。为什么?
<Style TargetType="local:SensorMeter">
<Setter Property="UseSystemFocusVisuals" Value="True"></Setter>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="local:SensorMeter">
<Viewbox>
<Ellipse x:Name="PART_MeterCenter" RenderTransformOrigin="0.5,0.5" HorizontalAlignment="Center" VerticalAlignment="Center">
<Ellipse.RenderTransform>
<CompositeTransform/>
</Ellipse.RenderTransform>
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="Click">
<core:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CenterCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CenterCommandParameter}"/>
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
</Ellipse>
<Button Content="ClickBtn">
<interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="Click">
<core:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CenterCommand}"
CommandParameter="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CenterCommandParameter}"/>
</core:EventTriggerBehavior>
</interactivity:Interaction.Behaviors>
</Button>.........我在TemplateControl C#代码中用这段代码画了一个圆。
var _meterCenter = _sensorMeter.GetTemplateChild("PART_MeterCenter") as Ellipse;
if (_meterCenter != null)
{
_meterCenter.Stroke = _sensorMeter.MeterBorder_Brush;
_meterCenter.StrokeThickness = _sensorMeter.MeterBorderWidth;
_meterCenter.Fill = _sensorMeter.CenterThresHoldColor;
_meterCenter.Opacity = Opacity;
_meterCenter.Height = _sensorMeter.meterCenterSize * 2;
_meterCenter.Width = _sensorMeter.meterCenterSize * 2;
_meterCenter.Margin = new Thickness(0, _sensorMeter.MeterYOffset*2, 0, 0);
}实际上,在我的代码中,有很多网格,路径,椭圆。我应该去最上层接受点击事件吗?但是该按钮可以触发相同z索引中的事件。
在我的代码中,没有画布。THere仅为栅格、路径、椭圆。
发布于 2017-10-23 16:17:24
我用Interaction.Behavior添加了点击事件。按钮工作正常。但是Ellipse从来不会触发事件。为什么?
Ellipse没有像Button那样的Click事件。因此Command将不会被执行。根据您的需求,您可以观察Ellipse的PointerPressed事件,如下所示。
<Interactivity:Interaction.Behaviors>
<core:EventTriggerBehavior EventName="PointerPressed">
<core:InvokeCommandAction Command="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=CenterCommand}" />
</core:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>当点在椭圆中被按下时,后面代码中的commend将按预期执行。
https://stackoverflow.com/questions/46843034
复制相似问题