WPF 引用第三方库的控件在设计器加上设计时数据和属性


本文告诉大家如何在 VisualStudio 2022 的 XAML 设计器中,在设计时给第三方控件加上设计用的属性和数据的方法

此功能要求使用不低于 VisualStudio 2019 的 16.8 版本以上,要求第三方控件设计上不要太过诡异(稍微偏离规范问题不大)即可在 XAML 设计上使用此功能

在 2020 重新组建(谜)的 XAML 设计器团队给 WPF 的设计时带来了更强的功能,可以让 d: 设置任意的设计时属性,例如给 TextBlock 加上设计用到的内容。这些设计用到的内容,在运行时是被完全忽略的,如下面代码

<TextBlock Text="{Binding Name}" d:Text="Name!" />

对于第三方的库引用,也是受支持的。本文使用 HandyControl 作为例子,告诉大家如何使用设计时的属性设置

将使用 TagContainer 控件作为例子,在此控件中,可以设置 TagContainer.Items 的内容,期望在设计时有如下效果

HandyControl 加上设计时之前,需要加上此控件的设计时引用,如下面代码

  xmlns:hcDesignTimeControls="https://handyorg.github.io/handycontrol/design"

对于绝大部分控件库来说,都是简单在后缀上加上 /design 即可。对于控件库开发者来说,也不需要额外做什么,这是自然的支持

需要将上面定义的 hcDesignTimeControls 也加入到 mc:Ignorable 里面,用来告诉 XAML 构建,这是一个设计时的内容,还请忽略。否则对于一些控件库来说,将会提示找不到对应的属性

        xmlns:hc="https://handyorg.github.io/handycontrol"
        xmlns:hcDesignTimeControls="https://handyorg.github.io/handycontrol/design"
        mc:Ignorable="d hcDesignTimeControls"

编写的 TagContainer 控件内容如下

    <hc:TagContainer>
      <hcDesignTimeControls:TagContainer.Items>
        <hc:Tag>
          <hc:Tag.Content>
            <TextBlock>123</TextBlock>
          </hc:Tag.Content>
        </hc:Tag>
        <hc:Tag Content="2" />
        <hc:Tag Content="3" />
      </hcDesignTimeControls:TagContainer.Items>
    </hc:TagContainer>

效果如下

更多请看

Use Design Time Data with the XAML Designer in Visual Studio - Visual Studio (Windows)

What's the correct syntax for third-party control design-time property assign? · Issue #5766 · dotnet/wpf

文章来源:https://www.cnblogs.com/lindexi/p/15669161.html

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
管理员
上一篇:dotnet 通过 DockerfileContext 解决项目放在里层文件夹导致 VisualStudio 构建失败
下一篇:WPF对象级资源
评论列表

发表评论

评论内容
昵称:
关联文章

WPF 引用设计加上设计数据属性
【荐】开源Winform:花木兰
WPF_15_格式化绑定数据
YESWEB业务模块数据库配置
WPF 双向绑定到非公开 set 方法属性 NET 45 NET Core 行为不同
WPF开发随笔收录-自定义图标
.net core winform窗体继承后设计异常,看不到,并且页无法添加
依赖属性使用
EFCore官方扩展
WPF学习笔记(四):AvalonEdit 代码高亮编辑专题
附加属性使用
Devexpress GridControl删除中多余无效ColumnEdit组
【C#】C#中使用GDAL3():Windows下编译插驱动
如何更改winform中GroupboxControls属性内控排序
C#8.0 可空引用类型
Winform项目Web API.NetCore项目中使用Serilog 来记录日志信息
支付宝支付报错:40003,应用未绑定服务商账号
C# 值得永久收藏WPF项目实战(经典)
WPF 布局 有限空间内让两个元素尽可能撑开例子
[WPF] 用 Effect 实现线条光影效果

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码