初めて投稿します。
よろしくお願いします。
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' を解決するために適用できる名前スコープがありません。
のメッセージが表示されます。
ソース内でアニメーションを動作させる方法を教えて頂けないでしょうか?
宜しくお願いします。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/02/21 13:26