トップ回答者
ボタンの色がかわるのを止める

質問
回答
-
ボタンが多いとありますが、指でタッチして操作できる 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
-
Blend for Visual Studio を使えばできると思います。
ボタンのテンプレートをコピーして作成すれば、VisualState(状態)情報もいろいろと作成されるので
その中で必要な状態 (この場合、Pointer Over やPressed だと思いますが) について、画面上で各種プロパティの設定をすればご希望の動作になると思います。テンプレートの作成についてはこの辺を参考にしていただければと思います。
http://msdn.microsoft.com/ja-jp/library/windows/apps/jj155270.aspxrysa
- 回答としてマーク shocho0101 2013年7月27日 4:51
すべての返信
-
-
ありがとうございます。認定の要件は流し読みしかしていませんでした。作っているアプリはボタンが多く、カーソルが来るたびに色が変わるとかえってみずらくなります。カーソルがきた時だけ視覚効果を着ることはできますか。
- 編集済み shocho0101 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
-
Blend for Visual Studio を使えばできると思います。
ボタンのテンプレートをコピーして作成すれば、VisualState(状態)情報もいろいろと作成されるので
その中で必要な状態 (この場合、Pointer Over やPressed だと思いますが) について、画面上で各種プロパティの設定をすればご希望の動作になると思います。テンプレートの作成についてはこの辺を参考にしていただければと思います。
http://msdn.microsoft.com/ja-jp/library/windows/apps/jj155270.aspxrysa
- 回答としてマーク shocho0101 2013年7月27日 4:51