C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: WPFでTargetPropertyの設定


(過去ログ 70 を表示中)

[トピック内 2 記事 (1 - 2 表示)]  << 0 >>

■40797 / inTopicNo.1)  WPFでTargetPropertyの設定
  
□投稿者/ gtk2k (66回)-(2009/09/03(Thu) 12:47:01)

分類:[.NET 全般] 

WPFアプリを作成しようと思っています。WPFプログラミング自体今回が初めてでいろんなことがわからない状態です。

Blend3を使用して作っているのですが、いまだに要領が得ないものでさっぱりアニメーションの設定の仕方がわかりません。
ですのでとりあえず、アニメーションのStoryboardの部分はXAMLをゴリゴリ記述することにしました。
Borderとその中にImageをいれたものを"Make Into Control"という機能を使ってButtonコントロール化しました。
そこで、マウスが上にきたときに色をかえるということをしたいのです。
BorderのBackgroundの色をアニメーションさせようと思っているのですが(Imageには透過色のある画像を設定)、
BorderとImageの組み合わせによるButtonコントロールですのでStoryboard.TargetPropertyに何を設定すればいいのかがわからないのです。
とりあえず、以下のように記述してみました。

<Style x:Key="ButtonStyle" TargetType="{x:Type Button}">
    <Setter Property="Template">
        <Setter.Value>
            <ControlTemplate TargetType="{x:Type Button}">
                <Grid>
                    <Border BorderBrush="#FF333333" BorderThickness="2">
                        <Image Margin="0" Source="plus.png" Stretch="None"/>
                    </Border>
                    <ContentPresenter
                        HorizontalAlignment="{TemplateBinding HorizontalContentAlignment}"
                        VerticalAlignment="{TemplateBinding VerticalContentAlignment}"
                        SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"
                        RecognizesAccessKey="True"/>
                </Grid>
                <ControlTemplate.Triggers>
                    <EventTrigger RoutedEvent="Button.MouseEnter">
                        <BeginStoryboard>
                            <Storyboard>
                                <!--★-->
                                <ColorAnimation Storyboard.TargetProperty="Border.Background"
                                    From="#00000000" To="#FFFFFFFF" Duration="0:0:1"/>
                            </Storyboard>
                        </BeginStoryboard>
                    </EventTrigger>
                    <Trigger Property="IsFocused" Value="True"/>
                    <Trigger Property="IsDefaulted" Value="True"/>
                    <Trigger Property="IsMouseOver" Value="True"/>
                    <Trigger Property="IsPressed" Value="True"/>
                    <Trigger Property="IsEnabled" Value="False"/>
                </ControlTemplate.Triggers>
            </ControlTemplate>
        </Setter.Value>
    </Setter>
</Style>

実行してみると、とりあえずマウスを上に乗せたときにエラーが発生するのでトリガーは動作しているようです。
エラーの内容は
"ハンドルされていない例外: System.InvalidOperationException: プロパティ パス 'Border.Background' に解決できないプロパティ参照があります。該当するオブジェクトでそれらのプロパティがサポートされていることを確認してください。"
というものです。

Storyboard.TargetPropertyにはどのような文字列を設定すればよろしいのでしょうか?

引用返信 編集キー/
■40802 / inTopicNo.2)  Re[1]: WPFでTargetPropertyの設定
□投稿者/ gtk2k (67回)-(2009/09/03(Thu) 14:10:24)
2009/09/03(Thu) 14:11:29 編集(投稿者)

お騒がせして申し訳ございませんでした。解決しました。
BorderのBackgroundには"{TemplateBinding Background}"として
ButtonコントロールのBackgroundプロパティをバインドし、
Storyboard.TargetPropertyには"(Background).(SolidColorBrush.Color)"を設定することにより、
期待する動作を行わせることができました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -