如何在扩展WPF工具包中自定义IntegerUpDown控件内部的ButtonSpinner控件?

siv3szwd  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(169)

抱歉,我在WPF样式方面还是个新手。我有一个ButtonSpinner控件,我使用适当的属性设置了它的宽度和高度:

<xctk:ButtonSpinner Width="200" SpinnerWidth="100" SpinnerHeight="100">
    </xctk:ButtonSpinner>

它的工作原理是,向上微调器和向下微调器的宽度和高度相应增加。
但是为什么我不能在将它应用于IntegerUpDown控件内部的ButtonSpinner时做同样的事情呢?(IntegerUpDown主题:https://github.com/xceedsoftware/wpftoolkit/blob/master/ExtendedWPFToolkitSolution/Src/Xceed.Wpf.Toolkit/NumericUpDown/Themes/Generic.xaml):

<xctk:IntegerUpDown Value="1564" Width="200" Height="100">
        <xctk:IntegerUpDown.Resources>
            <Style TargetType="{x:Type xctk:ButtonSpinner}">
                <Setter Property="SpinnerWidth" Value="100"/>
                <Setter Property="SpinnerHeight" Value="100"/>
            </Style>
        </xctk:IntegerUpDown.Resources>
</xctk:IntegerUpDown>

看起来还是一样。我错过什么了吗?

jtw3ybtb

jtw3ybtb1#

添加到控件的Resources属性的隐式Style是否应用于该控件的子元素取决于控件模板的定义方式。
如果模板如下例所示显式设置子控件的Style属性,则不会应用Resources中的隐式Style

<ControlTemplate TargetType="{x:Type xctk:IntegerUpDown}">
    ...
    <xctk:ButtonSpinner Style="{StaticResource someCustomStyle}" ... />

此外,如果模板设置子控件的依赖项属性的本地值,则不能使用Style设置此属性,因为本地值将precedence替换为由StyleSetter指定的值。

相关问题