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

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

新規登録して質問してみよう
ただいま回答率
85.36%
C#

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

Q&A

解決済

1回答

5895閲覧

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

koushichan

総合スコア6

C#

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

0グッド

0クリップ

投稿2015/02/02 17:20

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

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' を解決するために適用できる名前スコープがありません。

のメッセージが表示されます。

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

気になる質問をクリップする

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

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 14:22

編集2015/02/20 14:57
honi

総合スコア7

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

koushichan

2015/02/21 13:26

ご回答の方有難うございます。 教えて頂いた内容で直してみます。 エラーの内容が分からなかったもので、投稿させて頂いたのです。 自分が記載した内容だと無理な方法だったのだと思います。 返答頂き有難うございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問