这个ContentTemplate有什么问题?

时间:2009-01-30 17:45:16

标签: wpf templates xaml datatemplate

我在样式中收到此内容模板的错误:“必须同时为Setter指定属性和值。”我不这样做吗?

<Style x:Key="LinkButton" TargetType="Button">
<Setter Property="Template">
    <Setter.Value>
        <ControlTemplate TargetType="Button">
            <ContentPresenter/>
        </ControlTemplate>
    </Setter.Value>
</Setter>
<Setter Property="ContentTemplate">
    <Setter.Value>
        <DataTemplate>
            <Label x:Name="ContentRoot">
                <StackPanel Orientation="Horizontal">
                    <Viewbox Width="24" Height="24" VerticalAlignment="Center">
                        <Image x:Name="ButtonImage" Source="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Button}}, Path=Tag}" />
                    </Viewbox>
                    <TextBlock VerticalAlignment="Center" x:Name="ButtonText" Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type Button}}, Path=Content}"></TextBlock>
                </StackPanel>
            </Label>
            <DataTemplate.Triggers>
                <Trigger Property="IsMouseOver" Value="True">
                    <Setter TargetName="ButtonText" Property="TextBlock.TextDecorations" Value="Underline"/>
                </Trigger>
            </DataTemplate.Triggers>
        </DataTemplate>
    </Setter.Value>
</Setter>

这是一个将使用这种风格的按钮:

<Button Name="HelpButton" Style="{StaticResource LinkButton}" Height="30" Content="Help" Tag="Help.png"/>

谢谢!

1 个答案:

答案 0 :(得分:0)

我装了这个,没有这样的问题。我看到的唯一问题是你的按钮永远不会应用样式。这是因为如果您想要应用样式,则需要从样式中删除x:Key。否则,如果您希望样式仅应用于HelpButton,则定义应如下所示:

<Button Name="HelpButton" Style="{StaticResource LinkButton}" Height="30" Content="Help" Tag="Help.png"/>

但是我看不到你看到的错误。