none
ボタンの色がかわるのを止める RRS feed

  • 質問

  • vbを使って言います

    ボタンにマウスのカーソルが来たときやクリックしたときに

    ボタンの色が変わるのを止めることはできるのでしょうか。

    2013年7月24日 11:32

回答

  • ボタンが多いとありますが、指でタッチして操作できる UI になっていますか?
    マウスでは操作できるけれど、指で操作できないレベルに敷き詰めていると、認定されない可能性があります。
    タッチで操作できることは必要条件です。「マウスでなら操作できる」という主張は通らないはずなので、ご注意ください。
    (Windows ストアアプリの設計思想として、余計な情報は表示しない、コンテンツに集中できるようにする、シンプルな UI を目指すべきと言ったところがあるはずなので、それから外れるならそれなりの理由が必要だと思います。デスクトップアプリの感覚だけでは理由になりません)

    さて、本当にそれをやりたいのであれば、スタイルを編集することになります。
    ボタンを右クリックして表示されるメニューから、テンプレートの編集、コピーして編集と進み、表示されるダイアログで「すべてに適用」を選んで OK を押してください。
    XAML エディタの方に Button を対象にしたスタイルが追加されますので、以下のように変更してください。

    <VisualState x:Name="PointerOver">
        <Storyboard>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Border">
                <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPointerOverBackgroundThemeBrush}"/>
            </ObjectAnimationUsingKeyFrames>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
                <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPointerOverForegroundThemeBrush}"/>
            </ObjectAnimationUsingKeyFrames>
        </Storyboard>
    </VisualState>

    上記を以下のようにする。

    <VisualState x:Name="PointerOver" />
    こうすることで、そのページにあるすべてのボタンがこのスタイルに基づいて、PointerOver(マウスが対象の上にあるとき)のアニメーション(変化)がなくなります。
    • 回答としてマーク shocho0101 2013年7月27日 4:51
    2013年7月25日 14:19
    モデレータ
  • Blend for Visual Studio を使えばできると思います。

    ボタンのテンプレートをコピーして作成すれば、VisualState(状態)情報もいろいろと作成されるので
    その中で必要な状態 (この場合、Pointer Over やPressed だと思いますが) について、画面上で各種プロパティの設定をすればご希望の動作になると思います。

    テンプレートの作成についてはこの辺を参考にしていただければと思います。
    http://msdn.microsoft.com/ja-jp/library/windows/apps/jj155270.aspx


    rysa

    • 回答としてマーク shocho0101 2013年7月27日 4:51
    2013年7月25日 14:35

すべての返信

  • ストアアプリを開発されていて、将来的にストアに提出を予定されているのであれば、一度「認定の要件」を読んでみてください。

    この中に「アプリは、ユーザーが対話要素をタッチしたときに視覚的なフィードバックを返す必要があります。」という規定があります。
    単純に視覚効果を切るだけだと、この規定に抵触して認定されない恐れがあります。

    もし、ストアに公開しない実験的な目的であれば、その旨書いていただければ何らかの助言をもらえると思います。
    または、ストアアプリではなく、デスクトップアプリなのであればその旨お書き添えください。

    2013年7月24日 13:34
    モデレータ
  • ありがとうございます。認定の要件は流し読みしかしていませんでした。作っているアプリはボタンが多く、カーソルが来るたびに色が変わるとかえってみずらくなります。カーソルがきた時だけ視覚効果を着ることはできますか。
    • 編集済み shocho0101 2013年7月25日 10:46 句点の追加
    2013年7月25日 10:46
  • ボタンが多いとありますが、指でタッチして操作できる UI になっていますか?
    マウスでは操作できるけれど、指で操作できないレベルに敷き詰めていると、認定されない可能性があります。
    タッチで操作できることは必要条件です。「マウスでなら操作できる」という主張は通らないはずなので、ご注意ください。
    (Windows ストアアプリの設計思想として、余計な情報は表示しない、コンテンツに集中できるようにする、シンプルな UI を目指すべきと言ったところがあるはずなので、それから外れるならそれなりの理由が必要だと思います。デスクトップアプリの感覚だけでは理由になりません)

    さて、本当にそれをやりたいのであれば、スタイルを編集することになります。
    ボタンを右クリックして表示されるメニューから、テンプレートの編集、コピーして編集と進み、表示されるダイアログで「すべてに適用」を選んで OK を押してください。
    XAML エディタの方に Button を対象にしたスタイルが追加されますので、以下のように変更してください。

    <VisualState x:Name="PointerOver">
        <Storyboard>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="Border">
                <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPointerOverBackgroundThemeBrush}"/>
            </ObjectAnimationUsingKeyFrames>
            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
                <DiscreteObjectKeyFrame KeyTime="0" Value="{StaticResource ButtonPointerOverForegroundThemeBrush}"/>
            </ObjectAnimationUsingKeyFrames>
        </Storyboard>
    </VisualState>

    上記を以下のようにする。

    <VisualState x:Name="PointerOver" />
    こうすることで、そのページにあるすべてのボタンがこのスタイルに基づいて、PointerOver(マウスが対象の上にあるとき)のアニメーション(変化)がなくなります。
    • 回答としてマーク shocho0101 2013年7月27日 4:51
    2013年7月25日 14:19
    モデレータ
  • Blend for Visual Studio を使えばできると思います。

    ボタンのテンプレートをコピーして作成すれば、VisualState(状態)情報もいろいろと作成されるので
    その中で必要な状態 (この場合、Pointer Over やPressed だと思いますが) について、画面上で各種プロパティの設定をすればご希望の動作になると思います。

    テンプレートの作成についてはこの辺を参考にしていただければと思います。
    http://msdn.microsoft.com/ja-jp/library/windows/apps/jj155270.aspx


    rysa

    • 回答としてマーク shocho0101 2013年7月27日 4:51
    2013年7月25日 14:35