C# 使用ContentPresenter中的图像作为Windows Phone样式的不透明度遮罩
我在窗口中有一个按钮:C# 使用ContentPresenter中的图像作为Windows Phone样式的不透明度遮罩,c#,.net,wpf,silverlight,windows-phone-8,C#,.net,Wpf,Silverlight,Windows Phone 8,我在窗口中有一个按钮: <Button Style="{StaticResource EllipseButton}"> <Image Source="/Assets/Icons/user.png" /> </Button> 这是一种风格 <Style x:Key="EllipseButton" TargetType="Button"> <Setter Property="Template"> <
<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图像。
我该怎么做?
谢谢。ContentPresenter没有
Source
属性——它的Content
属性将是Image
对象,然后该对象将包含Source
<ImageBrush ImageSource="{Binding ElementName=content, Path=Content.Source"/>
还找到了另一个解决方案: 风格:
<Border Background="Orange">
<Border.OpacityMask>
<TemplateBinding Property="Content"></TemplateBinding>
</Border.OpacityMask>
</Border>
和按钮将ImageBrush作为内容:
<Button Style="{StaticResource EllipseButton}">
<ImageBrush ImageSource="/Assets/Icons/image.png" />
</Button>
非常好的解决方案,我会记住这一个。
<Button Style="{StaticResource EllipseButton}">
<ImageBrush ImageSource="/Assets/Icons/image.png" />
</Button>