1

画像を操作するボタンがいくつかあります。これらのボタンを画像の上に配置する必要があります。ボタンは画像そのものであるべきです。

  • ボタンは半透明にする必要があります。

  • ユーザーがどのコントロールがアクティブであるかを知ることができるように、画像/色はクリックで変更する必要があります。

  • ボタンの上にカーソルを置くと、不透明度が増加するはずです。

どうすればこれらを行うことができますか。カスタム コントロールの作成方法や使用するコントロールに関するガイドラインは非常に役立ちます。

4

1 に答える 1

1

あなたの要件を正しく理解していれば、ToggleButton はあなたが望むものを提供するはずだと思います。

Border基本的に、マウス オーバー ビジュアル用に1 つの半透明を作成Borderし、チェックされていないビジュアル用に別の半透明を作成する必要があります。次に、状態がアクティブなVisualStateMangerときに、 ;を表示します。状態がアクティブな場合は、 を表示します。MouseOverMouseOverVisualUncheckedUncheckedVisual

Expression Blend でスタイルを簡単にモックアップしました。完璧ではありませんが、少なくともいくつかのアイデアが得られます。:)

    <Style x:Key="SemiTransparentImageToggleButtonStyle" TargetType="ToggleButton">
        <Setter Property="HorizontalAlignment" Value="Center"/>
        <Setter Property="VerticalAlignment" Value="Center"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="ToggleButton">
                    <Grid HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}">
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Normal"/>
                                <VisualState x:Name="MouseOver">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="MouseOverVisual">
                                            <DiscreteObjectKeyFrame KeyTime="0">
                                                <DiscreteObjectKeyFrame.Value>
                                                    <Visibility>Visible</Visibility>
                                                </DiscreteObjectKeyFrame.Value>
                                            </DiscreteObjectKeyFrame>
                                        </ObjectAnimationUsingKeyFrames>
                                        <DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="UncheckedVisual" d:IsOptimized="True"/>
                                    </Storyboard>
                                </VisualState>
                                <VisualState x:Name="Pressed"/>
                                <VisualState x:Name="Disabled"/>
                            </VisualStateGroup>
                            <VisualStateGroup x:Name="CheckStates">
                                <VisualState x:Name="Checked"/>
                                <VisualState x:Name="Unchecked">
                                    <Storyboard>
                                        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="UncheckedVisual">
                                            <DiscreteObjectKeyFrame KeyTime="0">
                                                <DiscreteObjectKeyFrame.Value>
                                                    <Visibility>Visible</Visibility>
                                                </DiscreteObjectKeyFrame.Value>
                                            </DiscreteObjectKeyFrame>
                                        </ObjectAnimationUsingKeyFrames>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                            <VisualStateGroup x:Name="FocusStates">
                                <VisualState x:Name="Focused"/>
                                <VisualState x:Name="Unfocused"/>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                        <ContentPresenter x:Name="contentPresenter" ContentTemplate="{TemplateBinding ContentTemplate}" Content="{TemplateBinding Content}" HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}" VerticalAlignment="{TemplateBinding VerticalContentAlignment}"/>
                        <Border x:Name="MouseOverVisual" Background="White" Opacity="0.5" Visibility="Collapsed" OpacityMask="Black"/>
                        <Border x:Name="UncheckedVisual" Background="White" Opacity="0.7" Visibility="Collapsed"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
于 2011-10-22T06:34:14.737 に答える