WPF用户控制资源

WPF用户控制资源,wpf,xaml,resourcedictionary,Wpf,Xaml,Resourcedictionary,我在WPF用户控件程序集中制作了一个ResourceDictionary。我希望能够在这个UserControl中使用它,并将所有样式都放在这个单独的文件中 资源字典: <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"&g

我在WPF用户控件程序集中制作了一个ResourceDictionary。我希望能够在这个UserControl中使用它,并将所有样式都放在这个单独的文件中

资源字典:

<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中尝试了下面的代码,以定义每个控件的资源,但这种方式似乎也找不到资源

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


我应该在哪里以及如何放置/定义此文件?

我无法从提供的信息中判断您的文件结构

如果resource.xaml和control.xaml位于同一程序集的同一文件夹中,则只需引用mainResX.xaml,而不首先引用“/Resources”;否则,您需要以某种方式解释文件结构

他们在同一个集合中吗?您可以根据需要将尽可能多的“./”字符串添加到该位置,并使用文件夹(即,“../Resources/mainResX.xaml”)来“漫游”树

如果它们位于不同的程序集中,则需要指定包uri。实际上,您始终可以这样做,尽管在不必要时有点麻烦。这里有一个例子

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

HTH,

Berryl

我无法从提供的信息中判断您的文件结构

如果resource.xaml和control.xaml位于同一程序集的同一文件夹中,则只需引用mainResX.xaml,而不首先引用“/Resources”;否则,您需要以某种方式解释文件结构

他们在同一个集合中吗?您可以根据需要将尽可能多的“./”字符串添加到该位置,并使用文件夹(即,“../Resources/mainResX.xaml”)来“漫游”树

如果它们位于不同的程序集中,则需要指定包uri。实际上,您始终可以这样做,尽管在不必要时有点麻烦。这里有一个例子

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

HTH,

Berryl

我个人喜欢使用我的App.xaml来指定包含我在应用程序中全局使用的样式的xaml文件的“合并目录”。我通常有一个“DefaultStyles.xaml”来设置任何全局样式(比如,当您希望应用程序中的所有文本框看起来都一样,而不指定样式时)。然后我有一个“Styles.xaml”来设置特定的样式,或者你甚至可以为每个控件类型设置一个xaml,如果你真的有很多的话


您将这些文件放在app.xaml下的事实使它们成为应用程序的全局文件,不需要您不断地重新指定路径和字典。当然,这可能不适合所有的编码情况,但对我来说,这是一个节省时间的方法。

我个人喜欢使用App.xaml来指定包含我在应用程序中全局使用的样式的xaml文件的“合并目录”。我通常有一个“DefaultStyles.xaml”来设置任何全局样式(比如,当您希望应用程序中的所有文本框看起来都一样,而不指定样式时)。然后我有一个“Styles.xaml”来设置特定的样式,或者你甚至可以为每个控件类型设置一个xaml,如果你真的有很多的话



您将这些文件放在app.xaml下的事实使它们成为应用程序的全局文件,不需要您不断地重新指定路径和字典。当然,这可能不适合所有的编码情况,但对我来说,这节省了时间。

XAML文件的构建操作是否设置为Resource?(这是资源吗?我附近没有我的编码计算机…)它的构建操作没有,我将其更改为“嵌入式资源”,但我认为如果我想在交叉程序集上使用它,这将是一件好事。不确定这可能是“内容”或?!如果您是通过向导(资源字典)创建的,它的设置应该是正确的,您不应该更改它。我使用的是VS11,哪个向导?我只是点击了模块,在“Resources”文件夹中添加了一个ResourceDictionary。我通常右键点击项目并选择“Add->New Item”,然后你会有一个对话框(不是真正的wiz,对不起),在那里你可以选择ResourceDictionary。看看这个(不仅仅是答案),XAML文件的构建操作是否设置为Resource?(这是资源吗?我附近没有我的编码计算机…)它的构建操作没有,我将其更改为“嵌入式资源”,但我认为如果我想在交叉程序集上使用它,这将是一件好事。不确定这可能是“内容”或?!如果您是通过向导(资源字典)创建的,它的设置应该是正确的,您不应该更改它。我使用的是VS11,哪个向导?我只是点击了模块,在“Resources”文件夹中添加了一个ResourceDictionary。我通常右键点击项目并选择“Add->New Item”,然后你会有一个对话框(不是真正的wiz,对不起),在那里你可以选择ResourceDictionary。看看这个(不仅仅是阅读答案)相同的程序集,View.Xaml在Views文件夹中。资源在Resources文件夹中。Friend在我发表文章之前,我也尝试了“./Resources/mainResX.xaml”,但似乎UserControl视图仍然找不到它。此外,我将尝试您提供的内容,以提供有关任何进一步内部问题的更详细信息。同一程序集,View.Xaml位于Views文件夹中。资源在Resources文件夹中。Friend在我发表文章之前,我也尝试了“./Resources/mainResX.xaml”,但似乎UserControl视图仍然找不到它。此外,我将尝试您提供的内容,以提供有关任何进一步内部问题的更详细信息。感谢您提供的信息,此应用程序可能与您的应用程序有所不同,但了解您的想法对您很有好处,+1和谢谢。非常想知道,当您的一些资源位于基于您的方法的其他程序集中时,您如何处理它们?这与Berryl在回答中提到的方法相同。我不知道为什么它在你这方面不起作用,但是我现在无法访问我的编码计算机。谢谢你提供的信息,这个应用程序可能是一个