我有一个派生自userControl的自定义类,它描述了“服务窗口”应具有的功能。它还应描述此“服务窗口”实例的外观。
我有一个称为serviceStyle的样式。现在,每当我创建服务窗口的新实例时,我都必须在实例的XAML中手动设置样式,在可能的情况下,我希望通过基本上将所有服务窗口的子窗口样式强制为serviceStyle来避免这样做。然后,我希望能够在serviceStyle的textBlock上执行淡入淡出的动画。现在,由于这是“服务窗口”子级的样式,因此似乎无法访问...

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

现在,我需要能够从源代码获取ServiceWindowStyle的xaml中的textBlock元素。

提前致谢。

最佳答案

您无需执行此操作即可创建默认样式,只需定义样式即可。例如,此样式适用于应用程序中的所有按钮(如果样式在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应该在静态构造函数中完成

09-25 16:41