本文告訴大家如何在 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://blog.lindexi.com/

本作品采用知識共享署名-非商業性使用-相同方式共享 4.0 國際許可協議進行許可,歡迎轉載、使用、重新發布,但務必保留文章署名[林德熙](http://blog.csdn.net/lindexi_gd)(包含鏈接:http://blog.csdn.net/lindexi_gd ),不得用于商業目的,基于本文修改后的作品務必以相同的許可發布,如有任何疑問,請與我[聯系](mailto:[email protected]),
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/378073.html
標籤:.NET技术
