我知道这是一个基本问题,但我在理解如何正确理解这一点时遇到了一些麻烦。
鉴于以下XAML:
<Button>
<Grid Grid.Row="1">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="16" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Width="16" Height="16" Source="Resources/accept.png" />
<TextBlock Grid.Column="1" Margin="2">Continue</TextBlock>
</Grid>
</Button>
如何将其转换为样式以便轻松重复使用?如果我想要在属性中提供图像源和文本,该怎么办?这可能吗?
在相关的说明中,构建存储样式的文件的最佳实践是什么?您是否只是将它们放入一个新的XAML文件并将它们粘贴在样式解决方案文件夹中?
我对WPF很新,所以,我再次为基本问题道歉。
伊恩
答案 0 :(得分:1)
你真正想要的是一个控件模板,而不仅仅是一个简单的风格。 Here是一个相当不错的教程。
答案 1 :(得分:1)
修改1:
有几种方法可以控制样式。您可以StaticResource
访问它们,或提供TargetType
,以便将所有样式应用于该类型的控件。
要参数化您的样式,您可以考虑使用DataBinding。例如,如果您有一个为这些按钮提供内容的模型,您可以尝试以下方法:
<Grid.Resources>
<Style TargetType="Button">
<Setter Property="Content">
<Setter.Value>
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="16" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Image Grid.Column="0" Width="16" Height="16" Source="{Binding Path=Image}" />
<TextBlock Grid.Column="1" Margin="2" Text="{Binding Path=Text}" />
</Grid>
</Setter.Value>
</Setter>
</Style>
</Grid.Resources>
<Button x:Name="myButton1" Width="100" Height="100" />
这将是如何设置内容的示例。
myButton1.DataContext = new ButtonCaption {Text = "Testing"};
public class ButtonCaption
{
public Image Image { get; set; }
public string Text { get; set; }
}