2012-11-03 57 views
0

我在WPF用户控件大会中创建了一个ResourceDictionary。我希望能够在这个UserControl中使用此功能,并且具有此分隔文件中的所有样式。WPF UserControl Resources

的资源字典:

<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 和View是在同一个组装/浏览/ view.xaml

我认为可以在使用是:

<Border Style="{StaticResource ResourceKey=c1BtnX1}" 
     BorderBrush="Black" 
     Width="20" 
     Height="20"> 
       <TextBlock Text="X" /> 
</Border> 

我也尝试了用户控件中下面的代码,定义每控制资源,但这种方式似乎也是它不能找到资源。

<UserControl ... > 
    <UserControl.Resources> 
     <ResourceDictionary Source="../Resources/mainResX.xaml" />    
    </UserControl.Resources> 

哪里和我该如何放置/定义这个?

+0

XAML文件的Build操作是否设置为资源? (是否是资源?我没有我的编码计算机附近...) – Joe

+0

它的构建行动是没有,我改变它为“嵌入式资源”,但我认为这将是很好,如果我想在跨界使用它,组件。不知道这可能是“内容”或...?! – LastBye

+0

如果您通过向导(资源字典)创建它,它的设置应该是正确的,不应该改变它。 – Joe

回答

3

我无法从提供的信息中知道您的文件结构是什么。

如果resource.xaml和control.xaml位于同一个程序集的同一文件夹中,那么只需首先引用mainResX.xaml,而不要使用“/ Resources”否则你需要以某种方式考虑文件结构。

它们在同一个组件中吗?您可以根据需要在该位置预置尽可能多的“../”字符串,并在使用文件夹(即“../Resources/mainResX.xaml”)中“走动”树。

如果它们在不同的程序集中,你需要指定一个包uri。实际上你可以总是这样做,尽管在没有必要的时候有点麻烦。下面是一个例子

<ResourceDictionary Source="pack://application:,,,/MyAssembly.Wpf;component/Resources/mainResX.xaml" /> 

HTH,
Berryl

+0

相同的组件,View.Xaml位于视图文件夹中。资源位于资源文件夹中。 – LastBye

+0

朋友在我的帖子之前,我也试过“../Resources/mainResX.xaml”,但似乎UserControl视图找不到。此外,我会尝试您提供的内容,以提供有关任何进一步内部问题的更详细信息。 – LastBye

1

我个人喜欢用我的App.xaml指定的包含,我在我的应用程序在全球范围使用样式XAML文件“MergedDirectory”。我通常有一个“DefaultStyles.xaml”来设置任何全局样式(例如,当你希望应用中的所有文本框看起来都没有指定样式时)。然后我有一个“Styles.xaml”来设置特定的样式,或者如果你真的有一堆它们,你甚至可以每个控件类型有一个xaml ...

事实上,你把这些放在app.xaml下它们对您的应用程序是全局的,并且不要求您不断重新指定路径和字典。当然,这可能不适合所有的编码情况,但对我而言,这是节省时间的。

+0

感谢您提供的信息,此应用程序可能与您的应用程序有所不同,但是了解您的想法,+1和感谢是很好的。 – LastBye

+0

渴望知道如何根据您的方法在其他程序集中处理某些资源? – LastBye

+0

这与Berryl在他的回答中提到的方法相同。我不确定为什么它不能用于您的目的,但同样,我目前无法访问我的编码计算机。 – Joe