代码之家  ›  专栏  ›  技术社区  ›  Mark Carpenter

这个ContentTemplate有什么问题?

  •  2
  • Mark Carpenter  · 技术社区  · 16 年前

    我在样式中遇到此内容模板的错误:“必须为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 回复  |  直到 16 年前
        1
  •  0
  •   Ray Booysen    16 年前

    我已经加载了这个,没有这样的问题。我看到的唯一问题是,你的按钮永远不会应用这种样式。这是因为如果要应用样式,需要从样式中删除x:Key。否则,如果你只想将样式应用于HelpButton,定义应该如下:

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

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

    推荐文章