0

我有一个针对按钮控件的 ControlTemplate。ControlTemplate 有两个用于正常和按下状态的图像,每个图像一个。我想在屏幕上的 8 个不同按钮中使用这个 ControlTemplate,每个按钮前面都有不同的图像。

<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>

如何在模板中放置第三张图片,以便为每个按钮接收不同的来源?

像这样的东西:

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

2 回答 2

0

为什么不将 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 回答
0

根据我对您问题的理解,您正在寻求实现附加属性

由于按钮本身不携带三个独立图像源的属性(您可以绕过该Content属性,但这会很痛苦),您将需要实现这些并简单地从您的模板执行标准绑定。

于 2013-03-12T02:14:44.463 回答