zhaowang11234 2023-02-22 18:56 采纳率: 100%
浏览 18
已结题

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

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

  • 写回答

1条回答 默认 最新

  • MarkHan_ 2023-02-22 19:21
    关注

    该回答引用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的样式。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 3月5日
  • 已采纳回答 2月25日
  • 创建了问题 2月22日

悬赏问题

  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改