请教关于控件继承后没有样式的问题

我的项目使用了handycontrol,我写了一个datagrid 继承原生的datagrid控件,但是没有handycontrol的样式了,怎么样才能保留样式

该回答引用GPTᴼᴾᴱᴺᴬᴵ
在使用WPF控件时,控件的样式通常使用样式(Style)来定义和设置。当你继承原生DataGrid控件并创建了新的DataGrid子类后,该控件的样式和模板会被重置,导致丢失HandyControl的样式。
-
1.为了保留HandyControl的样式,你可以手动将HandyControl中的DataGrid样式应用到你的新控件上。以下是一些可能的解决方法:

<Style TargetType="{x:Type local:MyDataGrid}" BasedOn="{StaticResource {x:Type handy:DataGrid}}">
    <!--你的自定义样式设置-->
</Style>

这将会继承HandyControl中DataGrid的样式并在此基础上添加你自己的样式设置。

2.你可以手动将HandyControl中DataGrid的样式复制到你的新DataGrid控件的样式中。找到HandyControl中DataGrid的样式定义(在HandyControl的资源字典中),复制到你的新DataGrid控件的样式中,并在此基础上进行修改和调整。

3.你也可以通过将HandyControl中DataGrid的样式添加到应用程序级别的资源字典中,使其对整个应用程序可用。方法是在App.xaml中添加以下代码:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/HandyControl;component/Themes/Generic.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

这将会将HandyControl的资源字典合并到应用程序的资源字典中,从而使得HandyControl的样式在整个应用程序中可用。在你的新DataGrid控件中,使用HandyControl中DataGrid的样式即可。

希望以上解决方法能够帮助你保留HandyControl的样式。