在 WPF 用户控件库中的 UserControl 之间共享资源的最简单方法是什么?
其中有一个WPF用户控件库和两个(或更多)用户控件。我需要在两个用户控件中使用相同的样式。我如何分享这种风格? 例如:
这是样式:
<Style x:Key="customLabelStyle" TargetType="Label">
...
</Style>
用户控件 A:
<UserControl x:Class="Edu.Wpf.Example.UserControlA"
...xmlns stuff... >
<Grid>
... some xaml markup...
<Label Style="{StaticResource customLabelStyle}"/>
</Grid>
</UserControl>
UserControl B:
<UserControl x:Class="Edu.Wpf.Example.UserControlB"
...xmlns stuff... >
<Grid>
... some another xaml markup...
<Label Style="{StaticResource customLabelStyle}"/>
</Grid>
</UserControl>
那么如何在库中的用户控件之间共享此样式而不涉及应用程序 app.xaml 资源字典?
更新
我可以将 Themes\Generic.xaml 添加到我的库中并在那里定义样式。但在这种情况下,我必须使用 ComponentResourceKey 作为样式的键。正确的?很长而且不太方便表达...
There are a WPF User Control library and two (or more) User Controls in it. I need to use the same style in both user controls. How can I share this style?
For example:
This is the style:
<Style x:Key="customLabelStyle" TargetType="Label">
...
</Style>
User control A:
<UserControl x:Class="Edu.Wpf.Example.UserControlA"
...xmlns stuff... >
<Grid>
... some xaml markup...
<Label Style="{StaticResource customLabelStyle}"/>
</Grid>
</UserControl>
UserControl B:
<UserControl x:Class="Edu.Wpf.Example.UserControlB"
...xmlns stuff... >
<Grid>
... some another xaml markup...
<Label Style="{StaticResource customLabelStyle}"/>
</Grid>
</UserControl>
So how can I share this style between user controls in the library without involving of the application app.xaml resource dictionary?
UPDATE
I can add Themes\Generic.xaml into my library and define the style there. But in this case I have to use ComponentResourceKey as the key of the style. Right? It's long and not very handy expression...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
假设您有一个资源定义颜色,如下所示:
另一种资源定义一些基本样式,如下所示:
然后,您可以将资源添加到 App.xaml 的 Application.Resources 标记,如下所示:
然后,在所有 UserControl 中,您可以如示例代码所示,使用样式或画笔作为 StaticResources。
Say that you have one resource defining colors, like this:
And another one defining some basic styles like this:
You can then add your resources to the App.xaml's Application.Resources tag as shown here:
Then, in all your UserControls, you can use the styles or brushes as StaticResources as your example code shows.
您可以在单独的
ResourceDictionary
中定义共享资源,然后使用 合并词典。You can define the shared resources in a separate
ResourceDictionary
, then merge them into yourUserControl
's Resources using MergedDictionaries.我找到了在设计时也有效的解决方案(至少在 VS2010 中):
此附加属性可以应用于 FrameworkElement。想象一下,customLabelStyle 是在 Edu.Wpf.Example 项目的 Styles.xaml 字典中定义的。所以这种风格可以通过以下方式应用:
I found the solution that works in design time too (at least in VS2010) :
This attached property can be applied to a FrameworkElement. Imagine the customLabelStyle is defined in the Styles.xaml dictionary in the Edu.Wpf.Example project. So this style can be applied in the next way: