내 템플릿 컨트롤에 버튼과 타원이 있습니다. Interaction.Behavior가있는 클릭 이벤트를 추가했습니다. 버튼이 잘 작동합니다. 타원은 결코 그 사건을 해고하지 않습니다. 왜 ?UWP Interaction.Behavior with 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- 인덱스에서 이벤트를 발생시킬 수 있습니다.
내 코드에는 캔버스가 없습니다. 여기에는 Grid, Path, Ellipse 만 있습니다.