改变父母的风格

时间:2011-07-14 15:15:01

标签: c# wpf scope styles

我有一个派生自userControl的自定义类,它描述了“服务窗口”应该具有的功能。它还应该描述这个“服务窗口”的实例应该如何。 我有一个名为serviceStyle的样式。现在,每当我创建服务窗口的新实例时,我都必须在实例的XAML中手动设置样式,如果可能的话,我希望通过基本强制将样式提供给serviceStyle的服务窗口的所有子项来避免必须这样做。然后我希望能够在serviceStyle中的textBlock上执行淡入淡出动画。既然这是“服务窗口”的孩子的风格,它似乎无法到达......

与此同时,我找到了一种方法将Style设置为所有服务窗口的默认样式,这可以通过在构造函数中添加以下行来完成:         DefaultStyleKeyProperty.OverrideMetadata(typeof(NetcarityService),新的FrameworkPropertyMetadata(typeof(NetcarityService)));

现在我需要能够从源代码到ServiceWindowStyle的xaml中的元素textBlock ....

提前致谢。

1 个答案:

答案 0 :(得分:0)

为了制作默认样式,您不需要这样做,只需在没有键的情况下定义样式。例如,此样式适用于应用程序中的所有按钮(如果样式在app.xaml中定义)

        <Style TargetType="{x:Type Button}">
            <Style.Setters>
                <Setter Property="Margin" Value="6"></Setter>
                <Setter Property="Padding" Value="6,3,6,3"></Setter>
            </Style.Setters>
        </Style>

关于孩子们,我认为你只需要编写一些代码来检测添加孩子的时间并设置孩子的默认样式。我想你可以覆盖OnVisualChildrenChanged。

PS。设置DefaultStyleKeyProperty应该在静态构造函数

中完成