質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.36%

  • C#

    4774questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

カスタムコントロールでのColorAnimation()のやり方について質問

解決済

回答 1

投稿 2015/02/03 02:20 ・編集 2015/02/03 02:29

  • 評価
  • クリップ 0
  • VIEW 3,302

koushichan

score 1

初めて投稿します。
よろしくお願いします。

WPFでプログラムを作成しております。
Buttonテンプレートを使って違う画像にし、
それをクリックした時のアニメーションするようにしたいのです。
[XAML]
    <Style TargetType="{x:Type local:SearchButtonControl}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:SearchButtonControl}">
                    <Button x:Name="SearchButton" IsTabStop="False"
                        Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"
                        >
                        <Button.Template>
                            <ControlTemplate x:Name="SearchButtonTemplate" TargetType="{x:Type Button}">
                                <Border x:Name="SearchBorder" Background="#00FFFFFF">
                                    <Ellipse x:Name="SearchIcon"
                                        Fill="White"  Stroke="#FF404040" StrokeThickness="3"
                                        VerticalAlignment="Center" HorizontalAlignment="Center" Stretch="Fill"
                                        Width="{TemplateBinding Width}" Height="{TemplateBinding Height}"
                                    />
                                </Border>
                            </ControlTemplate>
                        </Button.Template>
                    </Button>
                </ControlTemplate>
           </Setter.Value>
      </Setter>
    </Style>

[CS]
    public class SearchButtonControl : Control
    {
        static SearchButtonControl()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(SearchButtonControl), new FrameworkPropertyMetadata(typeof(SearchButtonControl)));
        }

        public override void OnApplyTemplate()
        {
            base.OnApplyTemplate();

            Button SearchButton = GetTemplateChild("SearchButton") as Button;

            ColorAnimation ClickColorAnimation = new ColorAnimation();
            ClickColorAnimation.To = Colors.Orange;
            ClickColorAnimation.Duration = TimeSpan.FromSeconds(1);
            Storyboard.SetTargetName(ClickColorAnimation, "SearchIcon");
            Storyboard.SetTargetProperty(ClickColorAnimation, new PropertyPath(Ellipse.FillProperty));
            Storyboard ClickStoryboard = new Storyboard();
            ClickStoryboard.Children.Add(ClickColorAnimation);
            
            SearchButton.Click += (s,e) =>
            {
                ClickStoryboard.Begin();
            };
        }
    }
[実行結果]
ボタンをクリックした時に
---------------------------------------------------------
型 'System.InvalidOperationException' のハンドルされていない例外が PresentationFramework.dll で発生しました
追加情報:名前 'SearchIcon' を解決するために適用できる名前スコープがありません。
---------------------------------------------------------
のメッセージが表示されます。

ソース内でアニメーションを動作させる方法を教えて頂けないでしょうか?
宜しくお願いします。
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

0

ソースコードを確認しました。
ボタンをクリックしたときに、色をオレンジ色にしたい、ということで良いでしょうか。

以下のような感じで、いかがでしょうか。

[XAML]

    <Style x:Key="ButtonStyle1" TargetType="{x:Type Button}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid>
                        <Ellipse x:Name="ellipse" Stroke="Black" StrokeThickness="3" Width="{TemplateBinding Width}" Height="{TemplateBinding Height}" Fill="Transparent"/>
                        <VisualStateManager.VisualStateGroups>
                            <VisualStateGroup x:Name="CommonStates">
                                <VisualState x:Name="Normal"/>
                                <VisualState x:Name="Pressed">
                                    <Storyboard>
                                        <ColorAnimation Storyboard.TargetName="ellipse" To="Orange"  Storyboard.TargetProperty="(Rectangle.Fill).(SolidColorBrush.Color)" Duration="0:0:0"/>
                                    </Storyboard>
                                </VisualState>
                            </VisualStateGroup>
                        </VisualStateManager.VisualStateGroups>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    <Style TargetType="{x:Type local:SearchButtonControl}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type local:SearchButtonControl}">
                    <Grid>
                        <Button Content="Button" HorizontalAlignment="Left" Height="120" Margin="28,32,0,0" Style="{StaticResource ButtonStyle1}" VerticalAlignment="Top" Width="125"/>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

[CS]

    public class SearchButtonControl: Control
    {
        static SearchButtonControl()
        {
            DefaultStyleKeyProperty.OverrideMetadata(typeof(SearchButtonControl), new FrameworkPropertyMetadata(typeof(SearchButtonControl)));
        } 
    }
以上です。よろしくお願いいたします。

投稿 2015/02/20 23:22

編集 2015/02/20 23:57

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2015/02/21 22:26

    ご回答の方有難うございます。
    教えて頂いた内容で直してみます。

    エラーの内容が分からなかったもので、投稿させて頂いたのです。
    自分が記載した内容だと無理な方法だったのだと思います。

    返答頂き有難うございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.36%

関連した質問

  • 解決済

    html、文字サイズを改行せずに変更、センタリング

    すごく初歩的かもしれませんが質問させていただきます。 ページ内で価格を表記する際に、(税込)の部分のみフォントのサイズを小さくしたいです。 WordPressで扱っているので、CS

  • 解決済

    【Sliderのデザイン】

    windows8.1 ストアアプリを、visualstudio2015、OSはWindows10で開発しております。 画像のような、スライダーを作成したいのですが、 自分の力では

  • 解決済

    ListViewの既存のTemplateを読み解く

    WindowsストアアプリをVisualStudio2015で開発中です。 現在ListViewのデザインをしているのですが、  マウスオーバー(ホバー?プルオーバー?)時と選択時

  • 解決済

    XAMLのStackPanel内DataTemplateに設置したボタンにスタイル(文字寄せとボタン...

     概要 ボタンを複数表示させる下記のようなコードで、 ・ボタンに表示する文字を中央寄せにしたい(現状:左寄せになる) ・ボタン同士をくっつけたい(現状:数ピクセル離れる) のです

  • 受付中

    WPF(XAML)で画像のボタンを実装したい

    このようなボタンをXAMLで実装したいのですが、全く見当もつきません。 指定したキーワードによって青色の部分の色を変更したいです。 どうやれば実装できるでしょうか。 また

  • 解決済

    WPFで排他的に選択させる

    前提・実現したいこと 1.ボタンをデータにより動的に生成する 2.そのボタンをラジオボタンのように排他的に選択させたい(タッチ操作のためラジオボタンは避けたい) 3.選択中の

  • 解決済

    WPFで×ボタンだけを消したい

    こんにちは。  Windows10でWPFのアプリケーションを開発しています。  Visual Studio 2015 Communityを使っています。  前提・実現し

  • 解決済

    WPF 画像付きボタンを押した時に画像を暗くする方法を教えてください

    画像付きボタンを押した時に画像を暗くする方法を教えてください ボタンを押した時にあらかじめ暗くした画像を用意して差し替える方法がありますが、できれば画像を差し替えずに画像を少しだ

同じタグがついた質問を見る

  • C#

    4774questions

    C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。