我在WPF用户控件程序集中创建了 ResourceDictionary 。我希望能够在此 UserControl 中使用此功能,并在此分隔文件中包含所有样式。
ResourceDictionary:
<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<Style x:Key="c1BtnX1">
<Setter Property="Background" Value="Bisque"></Setter>
</Style>
</ResourceDictionary>
它的地址是用户控件程序集资源/ mainResX.xaml 并且视图位于相同的程序集/ Views / view.xaml
中我认为可能是:
<Border Style="{StaticResource ResourceKey=c1BtnX1}"
BorderBrush="Black"
Width="20"
Height="20">
<TextBlock Text="X" />
</Border>
此外,我在UserControl中尝试了以下代码,以定义Per Control Resources,但这种方式似乎也无法找到资源。
<UserControl ... >
<UserControl.Resources>
<ResourceDictionary Source="../Resources/mainResX.xaml" />
</UserControl.Resources>
我应该在何处以及如何进行/定义?
答案 0 :(得分:3)
我无法从提供的信息中了解您的文件结构。
如果resource.xaml和control.xaml位于同一程序集的同一文件夹中,则只需引用mainResX.xaml而不使用“/ Resources”;否则你需要以某种方式考虑文件结构。
他们是否在同一个集会?您可以根据需要将“...”字符串添加到该位置,然后使用文件夹(即“../ Resources / mainResX.xaml”)
如果它们位于不同的程序集中,则需要指定包uri。实际上你可以做到这一点,虽然在没必要的时候有点麻烦。这是一个例子
<ResourceDictionary Source="pack://application:,,,/MyAssembly.Wpf;component/Resources/mainResX.xaml" />
HTH,
Berryl
答案 1 :(得分:1)
我个人喜欢使用我的App.xaml来指定包含我在我的应用程序中全局使用的样式的XAML文件的“MergedDirectory”。我通常有一个“DefaultStyles.xaml”来设置任何全局样式(就像你希望应用程序中的所有文本框看起来都一样而不指定样式)。然后我有一个“Styles.xaml”来设置特定的样式,或者你甚至可以为每个控件类型设置一个xaml,如果你真的有一堆...
将这些放在app.xaml下的事实使它们成为您应用的全局,并且不要求您不断地重新指定路径和词典。当然,这可能不适合所有编码情况,但对我来说这是一个节省时间。