我正在尝试制作可重复使用的进度条样式。
所以这里的想法非常简单。我有一个已经有目标类型ProgressBar的样式,它只是一个spny圈,从0-100%开始填充。但是,为了使其可重复使用和模块化,我不想对随之而来的文本进行硬编码 - 它应该是可选的。
所以我想创建另一种包含文本“下载... X / Y MB”的样式。为此,我为单位取X值,Y最大值和标记值。我想在左边的图形部分包含相同的spinny circle thingy。我怎样才能做到这一点?使用BasedOn属性,我认为你只能设置已经存在的东西。如果我想添加其他元素(在本例中为文本块),该怎么办?
答案 0 :(得分:0)
如果只有文本值区分,那么在样式中你可以将属性的值绑定到父的属性,比如Tag,在每个样式或元素中你可以根据特定要求调整它。
<Window.Resources>
<Style x:Key="FirstButtonStyle" TargetType="Button">
<Setter Property="Content" Value="1"/>
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<ContentPresenter/>
</ControlTemplate>
</Setter.Value>
</Setter>
</Style>
<Style x:Key="SecondButtonStyle" TargetType="Button" BasedOn="{StaticResource FirstButtonStyle}">
<Setter Property="Content" Value="2"/>
</Style>
</Window.Resources>
<StackPanel>
<Button Style="{StaticResource FirstButtonStyle}"/>
<Button Style="{StaticResource SecondButtonStyle}"/>
</StackPanel>
结果是1和2.
如果你的意图是在样式中注入一些UI元素,那么就没有这样的选项,唉。风格需要再次重写。