0

ボタンコントロールを対象とするControlTemplateがあります。ControlTemplateには、通常状態と押された状態の2つの画像があり、それぞれに1つずつあります。このControlTemplateを、画面の8つの異なるボタンで使用したいと思います。各ボタンの前には、異なる画像があります。

<ControlTemplate x:Key="ButtonControlTemplate1" TargetType="Button">
        <Grid>
            <VisualStateManager.VisualStateGroups>
                <VisualStateGroup x:Name="CommonStates1">
                    <VisualState x:Name="Pressed1">
                        <Storyboard>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="image">
                                <DiscreteObjectKeyFrame KeyTime="0">
                                    <DiscreteObjectKeyFrame.Value>
                                        <Visibility>Collapsed</Visibility>
                                    </DiscreteObjectKeyFrame.Value>
                                </DiscreteObjectKeyFrame>
                            </ObjectAnimationUsingKeyFrames>
                            <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.Visibility)" Storyboard.TargetName="image1">
                                <DiscreteObjectKeyFrame KeyTime="0">
                                    <DiscreteObjectKeyFrame.Value>
                                        <Visibility>Visible</Visibility>
                                    </DiscreteObjectKeyFrame.Value>
                                </DiscreteObjectKeyFrame>
                            </ObjectAnimationUsingKeyFrames>
                        </Storyboard>
                    </VisualState>
                    <VisualState x:Name="Normal1"/>
                    <VisualState x:Name="Disabled1"/>
                    <VisualState x:Name="MouseOver1"/>
                </VisualStateGroup>
                <VisualStateGroup x:Name="FocusStates1">
                    <VisualState x:Name="Focused1"/>
                </VisualStateGroup>
                <VisualStateGroup x:Name="CommonStates"/>
                <VisualStateGroup x:Name="FocusStates"/>
            </VisualStateManager.VisualStateGroups>
            <Image x:Name="image" Source="source1" />
            <Image x:Name="image1" Source="source2" Visibility="Collapsed"/>
        </Grid>
    </ControlTemplate>

ボタンごとに異なるソースを受け取ることができる3番目の画像をテンプレート内に配置するにはどうすればよいですか?

このようなもの:

<Button Template="{StaticResource ButtonControlTemplate1}" thirdImage="source_to_third_image"/>
4

2 に答える 2

0

あなたの質問で私が理解していることから、あなたは添付されたプロパティを実装しようとしています。

ボタン自体は3つの別々の画像ソースのプロパティを持っていないので(Contentプロパティをハックすることはできますが、それは面倒です)、それらを実装し、テンプレートから標準のバインディングを実行する必要があります。

于 2013-03-12T02:14:44.463 に答える
0

3番目の画像にContentプロパティを使用しないのはなぜですか?

ControlTemplateは次のようになります。

<ControlTemplate x:Key="ButtonControlTemplate1" TargetType="Button">
    <Grid>
        ...
        <ContentPresenter Content="{TemplateBinding Content}" />
        <Image x:Name="image" Source="source1" />
        <Image x:Name="image1" Source="source2" Visibility="Collapsed"/>
    </Grid>
</ControlTemplate>

ボタンの宣言は次のようになります。

<Button>
    <Image Source="source3" />
</Button>

次に、関連する視覚的な状態を追加する必要があります。

于 2013-03-12T07:21:59.290 に答える