单击椭圆时更改不透明度? -WPF

时间:2020-06-09 10:28:12

标签: c# wpf xaml

我想更改单击椭圆时的不透明度。因此,如果单击椭圆,它的不透明度将从1变为0.2,如果再次单击它,它将切换回原来的状态。

目前,我的椭圆正在使用复杂的多重绑定

                            <Ellipse.Fill>
                                <MultiBinding Converter="{StaticResource FloatToCorConv}">
                                    <Binding Path="FValue" Mode="OneWay" />
                                    <Binding Path="MValue" Mode="OneWay" />
                                    <Binding Path="GId" Mode="OneWay" />
                                    <Binding Source="{x:Static foo:Bar.Instance}" Path="IsLiked" Mode="OneWay" />
                                </MultiBinding>
                            </Ellipse.Fill>

我有一个名为IsRemoved的布尔值,它具有FValue之类的属性,但是我不确定如何将其链接到鼠标单击以改变不透明度。到目前为止,我的椭圆还有其他一些按钮交互作用。

                        <i:Interaction.Triggers>
                            <i:EventTrigger EventName="MouseEnter">
                                <utils:InteractiveCommand Command="{Binding RelativeSource=
                    {RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.MouseEnter}"/>
                            </i:EventTrigger>
                            <i:EventTrigger EventName="MouseLeave">
                                <utils:InteractiveCommand Command="{Binding RelativeSource=
                    {RelativeSource FindAncestor, AncestorType={x:Type UserControl}}, Path=DataContext.MouseLeave}"/>
                            </i:EventTrigger>
                        </i:Interaction.Triggers>

1 个答案:

答案 0 :(得分:1)

可以使用ToggleButton和适当的Style / ContentTemplate

创建此显示
<ToggleButton>
    <ToggleButton.Style>
        <Style TargetType="{x:Type ToggleButton}">
            <Setter Property="Template">
                <Setter.Value>
                    <ControlTemplate TargetType="{x:Type ToggleButton}">
                        <Ellipse
                            x:Name="TheEllipse"
                            Width="64"
                            Height="32"
                            Fill="#0000FF"
                            Stroke="Black"
                            StrokeThickness="2" />

                        <ControlTemplate.Triggers>
                            <Trigger Property="IsChecked" Value="True">
                                <Setter TargetName="TheEllipse" Property="Fill" Value="#550000FF" />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ToggleButton.Style>
</ToggleButton>