2011-08-07 90 views
2

我有一个类命名的动画,并在同一目录下名为animationResources.xaml资源字典:获取的类C#路径

enter image description here

我能找到的资源在字典的方式创建资源字典,代码提供animationResources.xaml的路径:

ResourceDictionary dict = new ResourceDictionary(); 
Uri uri = new Uri("/FilesPro2.1;component/Classes/Storyboards/animationResources.xaml", UriKind.Relative); 
dict.Source = uri; 
Application.Current.Resources.MergedDictionaries.Add(dict); 

我刨导出此项目,所以实际的项目名称会有所不同,资源字典的路径也将发生变化。我唯一知道的是,类和资源字典将位于同一个目录中,在这种情况下,它是目录Storyboards(查看第一张图片)。所以为了构建Uri,我想我需要以某种方式获取该类的路径,并获取项目的名称。如果我得到这两个字符串,我可能会构建uri。我如何获得项目programaticaly(FilesPro2.1)的名称和Animations.cs(“C:\ Users ........ \ FilesPro2.1 \ classes \ storyboards \ animations.cs”)的路径这些类的名称也是相同的,并且资源字典的名称也是相同的。


编辑

我会尽量好一点遗憾解释我的自我。好的,所以也许无视标题问题。我正在构建几个项目,他们都有类似的动画。因此我想用代码创建故事板。当我这样做时,很难用c#设置缓动函数,因此我所做的就是用xaml创建缓动函数,并且使用c#创建基本动画,这也是一篇文章。当在单独的类上创建此动画时,如果合并字典,我可以从资源字典中找到资源。但为了让我合并字典,我需要知道路径。因为我计划将这个类和资源字典导出到多个项目,所以如果我不必知道路径,或者我不必为每个项目的app.xaml文件合并字典,那就会很好。我的目标是将animationResources.xaml和Animation.cs导入到每个项目中,然后期望(Antimation.cs)中的类从animationResources.xaml中找到资源。我不知道这是否可能,但我知道的唯一情况是,当导出animationResources.xaml和Antimation.cs时,它们将具有相同的名称,并且它们将位于同一目录中。这就是为什么我认为如果有可能找到Antimation.cs的路径,我将在哪里能够建立路径的字符串,以便合并项目名称等字典。

+0

为什么不将.xaml文件作为程序集资源嵌入? – cdhowie

+0

我该怎么做?对不起,我是新来wpf –

+0

我想我不会合并字典,如果我做你说的对吗? –

回答

2

我对WPF也比较陌生。你在你的问题中提到“我能找到一个资源的方式......”你是否也知道你可以通过使用XAML来找到资源?在你App.xaml文件,你可以添加一个应用程序资源,如下图所示:

<Application.Resources> 
    <ResourceDictionary> 
     <ResourceDictionary.MergedDictionaries> 
      <ResourceDictionary Source="StoryBoards\anmationResources.xaml" /> 
     </ResourceDictionary.MergedDictionaries> 
    </ResourceDictionary> 

</Application.Resources> 

然后,你可以使用{StaticResource的资源名称}这些资源。我会添加这个作为你的问题的评论,但我从来没有想过如何在评论中格式化代码,否则很难阅读。

+0

我会编辑我的问题,因为我认为我没有正确解释自己......感谢您的帮助 –

+1

@Tod:您可以通过将代码包围在代码中(例如\'您的代码在这里\')来将代码放在注释中。尽管你不能获得多行格式,但你可以让某些东西看起来像代码一样。 –