首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带椭圆的UWP Interaction.Behavior

带椭圆的UWP Interaction.Behavior
EN

Stack Overflow用户
提问于 2017-10-20 13:50:24
回答 1查看 107关注 0票数 0

在我的模板控件中,我有一个按钮和一个椭圆。我用Interaction.Behavior添加了点击事件。按钮工作正常。但是Ellipse从来不会触发事件。为什么?

代码语言:javascript
复制
<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#代码中用这段代码画了一个圆。

代码语言:javascript
复制
        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仅为栅格、路径、椭圆。

EN

回答 1

Stack Overflow用户

发布于 2017-10-23 16:17:24

我用Interaction.Behavior添加了点击事件。按钮工作正常。但是Ellipse从来不会触发事件。为什么?

Ellipse没有像Button那样的Click事件。因此Command将不会被执行。根据您的需求,您可以观察Ellipse的PointerPressed事件,如下所示。

代码语言:javascript
复制
<Interactivity:Interaction.Behaviors>
    <core:EventTriggerBehavior EventName="PointerPressed">
        <core:InvokeCommandAction  Command="{Binding  RelativeSource={RelativeSource TemplatedParent}, Path=CenterCommand}" />
    </core:EventTriggerBehavior>
</Interactivity:Interaction.Behaviors>

当点在椭圆中被按下时,后面代码中的commend将按预期执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46843034

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档