我的WPF应用程序中有多个位置需要一个外观和按钮的按钮。感觉就像一个普通的按钮,但是:
{StaticResource EditIcon}
){StaticResource GrayOutButtonStyle}
)我更喜欢在一个位置定义这些属性,而不是在每个使用按钮的地方重复它们。 在XAML中执行此操作的适当方法是什么?
-
如果有帮助,下面是我目前正在做的事情,但我被告知这是错误的:
更新:这是错误的方法吗?有没有办法解决这个问题,这是“正确的方法”?
我使用键EditButton
:
<ControlTemplate x:Key="EditButton" TargetType="{x:Type Button}">
<Button Style="{StaticResource GrayOutButtonStyle}"
Command="{TemplateBinding Command}">
<Image x:Name="editImage" Source="{StaticResource EditIcon}" />
</Button>
</ControlTemplate>
然后,我声明了一个带有模板EditButton的按钮,我想在应用程序中使用它。我还指出要在此处调用的命令:
<Button Template="{StaticResource EditButton}" Command="..." />
这不对吗?这样做的正确方法是什么?
答案 0 :(得分:1)
另一种方法:
您是否考虑过制作自定义控件?这样,您可以创建自己的属性来设置按钮中包含的图像,而不必依赖多种样式。
<myControl:MyButton x:Name="oneButton" ImageSource="MyButton.png" />
<myControl:MyButton x:Name="anotherButton" ImageSource="MyOtherButton.png" />
class MyButton {
private string imageSource;
public string ImageSource {
get {
return this.imageSource;
}
set {
this.imageSource = value;
//set the image control's source to this.imageSource
}
}
}
答案 1 :(得分:0)
您可以创建一个以您应用的所有按钮为目标的样式。这样做,只需创建一个Style而不给它一个键:
<Style TargetType={x:Type Button}>
</Style>
然后在Style中,您可以添加一个设置Template属性的setter:
<Setter Property="Template">
<Setter.Value>
<!-- whatever you want -->
</Setter.Value>
</Setter>