我在窗口中有这个按钮:
<Button Style="{StaticResource EllipseButton}">
<Image Source="/Assets/Icons/user.png" />
</Button>
这是一种风格
<Style x:Key="EllipseButton" TargetType="Button">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
...
<ContentPresenter x:Name="content"/>
<Border Background="Orange">
<Border.OpacityMask>
<ImageBrush ImageSource="{Binding ElementName=content, Path=Source"/>
</Border.OpacityMask>
</Border>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
所以我想显示我用于橙色按钮的任何白色PNG图像。 我怎样才能做到这一点? 感谢。
答案 0 :(得分:2)
ContentPresenter
没有Source
属性 - 其Content
属性将是Image
对象,然后应包含Source
...
<ImageBrush ImageSource="{Binding ElementName=content, Path=Content.Source"/>
如果这不起作用,您也可以尝试绑定到TemplatedParent
:
<ImageBrush ImageSource="{Binding
RelativeSource={RelativeSource TemplatedParent},
Path=Content.Source}"/>
答案 1 :(得分:1)
还找到了另一种解决方案:
风格:
<Border Background="Orange">
<Border.OpacityMask>
<TemplateBinding Property="Content"></TemplateBinding>
</Border.OpacityMask>
</Border>
和按钮将ImageBrush作为内容:
<Button Style="{StaticResource EllipseButton}">
<ImageBrush ImageSource="/Assets/Icons/image.png" />
</Button>