我正在尝试在C#WPF中设置一些按钮。这些按钮应该都有不同的背景图像,显示不同的图标。是否可以在所有按钮上设置相同的按钮样式,然后指定每个唯一图标。这是我正在使用的风格:
<Style TargetType="Button" x:Key="ButtonStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Ellipse Fill="SlateGray"/>
<Ellipse Margin="2">
<Ellipse.Fill>
<ImageBrush ImageSource="..." Stretch="Fill"/> <!-- What should I write here? -->
</Ellipse.Fill>
</Ellipse>
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
这就是我在XAML中创建按钮的方法:
<Button Style="{StaticResource ButtonStyle}"/> //How do I specify a unique image?
<Button Style="{StaticResource ButtonStyle}"/>
如果可以在那里执行,我也可以从代码后面创建这些按钮。
如何使用相同的样式但使用不同的图像?
答案 0 :(得分:1)
有几种方法可以实现这一目标。
最直接的做法是将每个按钮的Background
设置为ImageBrush
:
<Button Width="120" Height="30" Style="{StaticResource ButtonStyle}">
<Button.Background>
<ImageBrush ImageSource="yourimage.jpg" Stretch="Fill" />
</Button.Background>
</Button>
然后更新Style
以使用TemplateBinding
:
<Style TargetType="Button" x:Key="ButtonStyle">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Grid>
<Ellipse Fill="SlateGray"/>
<Ellipse Margin="2" Fill={TemplateBinding Background} />
</Grid>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
另一种方法是创建一个自定义按钮(例如ImageButton
),其中DependencyProperty
就是您的形象。
答案 1 :(得分:0)
您可以将Ellipse
的{{1}}绑定到Fill
的{{1}}属性。然后,在样式集Background
中默认为'ImageBrush'。
如果要使用具有不同图像的按钮,请将该按钮的“背景”设置为不同的图像。
您甚至可以使用不同类型的画笔来处理该特殊按钮,而不仅仅是图像。