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日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装