在 WPF 中,如何在设计视图中将样式应用于 UserControl?

Posted

技术标签:

【中文标题】在 WPF 中,如何在设计视图中将样式应用于 UserControl?【英文标题】:In WPF, How to apply style to UserControl in design view? 【发布时间】:2011-06-29 14:56:36 【问题描述】:

我通常在选项卡下的 App.xml 中定义样式和控件模板。 因此,在设计 UI 时,我可以在带有 .NET3.5 的 Visual Studio 2008 中看到具有设计视图中应用样式的 UI。

但是,在另一种情况下,有时我只制作 UserControl 项目,在这种情况下,没有 App.xml,因此 UI 在设计视图中显示为默认外观。很难知道运行时的实际外观。

有没有办法将样式也应用到 UserControl? 如果有办法在应用程序项目和 UserControl 项目之间共享相同的样式和模板,那就完美了!

如果有解决办法,请告诉我。

【问题讨论】:

创建一个页面或窗口作为根元素元素。将您的资源添加到 Window.Resources。将您的 UserControl 添加为 Window 的内容。 【参考方案1】:

您可以在您的控制项目中将您的样式保存在单独的ResourceDictionary 中。然后你需要在每个用户控件顶部的资源块中Merge Dictionaries:

<UserControl.Resources>
   <ResourceDictionary>
      <ResourceDictionary.MergedDictionaries>
         <ResourceDictionary Source="MyControlLibraryStyles.xaml"/>
      </ResourceDictionary.MergedDictionaries>
   </ResourceDictionary>
</UserControl.Resources>

这种方法的问题当然是您失去了应用级样式可以为您带来的任何好处(例如为不同的应用程序设置不同的样式),因为现在样式都由底层控件确定。

【讨论】:

完美!我想做的是对所有应用程序使用相同的样式,因此失去对不同应用程序使用不同样式的任何好处对我来说根本不是缺点。 =) 酷。谢谢,达娜。

以上是关于在 WPF 中,如何在设计视图中将样式应用于 UserControl?的主要内容,如果未能解决你的问题,请参考以下文章

从视图模型 (WPF) 调用视图中的动画

如何在服务器端渲染中将样式应用于 Next.js 中的 HTML?

在 WPF 中需要自定义样式的帮助

如何在 Xcode 9 中将 Autoresizing 应用于 Interface Builder?

VS2010 去除WPF设计视图中的网格线

WPF在在设计模式,使用动态样式