使用内容控制显示图像

时间:2016-01-09 12:39:12

标签: c# wpf xaml

我正在读一本关于WPF的书,因为我正试图学习它。

下面有一个按钮示例。除了下面的一行之外,这是有道理的。

<ContentControl Margin=”2” Content=”{TemplateBinding Content}”/>   

这本书如下所示,

Figure 14.9 shows what two Buttons look like with this new control template applied.
One Button has simple “OK” text content, and the other has an Image. In both cases, the content is reflected in the new visuals as expected.

但是,我无法看到如何在按钮上显示图像?我在下面画了一个三角形,我希望它位于按钮的中央,但是我无法让它出现。

我的图纸

<Polygon x:Key="playTriangle" Stroke="Black" Fill="Black">
        <Polygon.Points>
            <Point X="10" Y="40"/>
            <Point X="40" Y="25"/>
            <Point X="10" Y="10"/>
        </Polygon.Points>
    </Polygon>

图书示例

<ControlTemplate x:Key="buttonTemplatePlay" TargetType="{x:Type RibbonButton}">
        <Grid Height="60" Width ="60">
            <Ellipse x:Name="outerCircle">
                <Ellipse.Fill>
                    <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                        <GradientStop Offset="0" Color="Blue"/>
                        <GradientStop Offset="1" Color="Red"/>
                    </LinearGradientBrush>
                </Ellipse.Fill>
            </Ellipse>
            <Ellipse Margin="5">
                <Ellipse.Fill>
                    <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
                        <GradientStop Offset="0" Color="White"/>
                        <GradientStop Offset="1" Color="Transparent"/>
                    </LinearGradientBrush>
                </Ellipse.Fill>
            </Ellipse>
            <Viewbox>
                <ContentControl Margin="5" Content="{TemplateBinding Content}"/>
            </Viewbox>
        </Grid>
        <ControlTemplate.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter TargetName="outerCircle" Property="Fill" Value="Green"/>
            </Trigger>
            <Trigger Property="IsPressed" Value="True">
                <Setter Property="RenderTransform">
                    <Setter.Value>
                        <ScaleTransform ScaleX=".9" ScaleY=".9"/>
                    </Setter.Value>
                </Setter>
                <Setter Property="RenderTransformOrigin" Value=".5,.5"/>
            </Trigger>
        </ControlTemplate.Triggers>
    </ControlTemplate>

1 个答案:

答案 0 :(得分:1)

您应该将多边形(或任何其他内容)设置为按钮的内容:

 java.lang.NullPointerException: Attempt to invoke virtual method 'void de.ratchetcoding.theotherside.MapsActivity.moveCamera(com.google.android.gms.maps.model.LatLng)' on a null object

请注意,我删除了 <RibbonButton> <RibbonButton.Content> <Polygon Stroke="Black" Fill="Black"> <Polygon.Points> <Point X="10" Y="40"/> <Point X="40" Y="25"/> <Point X="10" Y="10"/> </Polygon.Points> </Polygon> </RibbonButton.Content> </RibbonButton> 属性

如果在资源字典中定义了多边形,则应使用x:Key="playTriangle"来引用它:

StaticResourceExtension

不管怎样,关键是你应该使用<RibbonButton Content={StaticResource ResourceKey=playTriangle}" /> 属性来设置按钮的内容。