WPF使用包含另一种样式的样式

时间:2015-12-14 17:14:28

标签: c# wpf xaml

我正在尝试制作可重复使用的进度条样式。

所以这里的想法非常简单。我有一个已经有目标类型ProgressBar的样式,它只是一个spny圈,从0-100%开始填充。但是,为了使其可重复使用和模块化,我不想对随之而来的文本进行硬编码 - 它应该是可选的。

所以我想创建另一种包含文本“下载... X / Y MB”的样式。为此,我为单位取X值,Y最大值和标记值。我想在左边的图形部分包含相同的spinny circle thingy。我怎样才能做到这一点?使用BasedOn属性,我认为你只能设置已经存在的东西。如果我想添加其他元素(在本例中为文本块),该怎么办?

1 个答案:

答案 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元素,那么就没有这样的选项,唉。风格需要再次重写。