标签: resourcedictionary

在文件夹中搜索和列出WPF资源字典

我正在制作一个WPF应用程序,它将由我们的构建系统标记多个皮肤.理想情况下,我们希望应用程序列出可用的皮肤,因为一些构建将具有一对多皮肤.

在运行时有没有办法枚举特定文件夹中的所有资源字典?

我想避免在我的代码隐藏中对XAML文件名进行硬编码,因为这是一种变化的情况.

wpf search list resourcedictionary

4
推荐指数
1
解决办法
3607
查看次数

为什么我不能在Silverlight中移动资源字典?

出于某种原因,以下代码给了我一个例外.

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/PPCa.Common.Infrastructure;component/Skins/Default.xaml"/>
            <ResourceDictionary>
                <app:ResourceWrapper x:Key="ResourceWrapper" />
                <app:NotOperatorValueConverter x:Key="NotOperatorValueConverter" />
            </ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>                
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

这是一个例外:

System.Windows.Markup.XamlParseException occurred
  Message=Failed to assign to property 'System.Windows.ResourceDictionary.Source'. [Line: 11 Position: 44]
  LineNumber=11
  LinePosition=44
  StackTrace:
       at System.Windows.Application.LoadComponent(Object component, Uri resourceLocator)
  InnerException: 
Run Code Online (Sandbox Code Playgroud)

第11行是这样的:

<ResourceDictionary Source="/PPCa.Common.Infrastructure;component/Skins/Default.xaml"/>
Run Code Online (Sandbox Code Playgroud)

我错误地合并了我的词典吗?

silverlight resources resourcedictionary

4
推荐指数
1
解决办法
2869
查看次数

动态加载ResourceDictionary

我的项目中有一个文件夹,模板,完整的(已编译的)XAML ResourceDictionaries.

在UserControl中,我想将所有模板加载到ResourceDictionary中.我会使用如下代码:

public MyView()
{
    InitializeComponent();
    foreach (var resourceUri in new GetResourceUrisFromTemplatesFolder())
        Resources.MergedDictionaries.Add(
            new ResourceDictionary
                { Source = new Uri(resourceUri, UriKind.Relative) });
}
Run Code Online (Sandbox Code Playgroud)

我需要写的是GetResourceUrisFromTemplatesFolder方法.我需要它来发现该文件夹中的所有资源.

URI可以采用类似/MyAssembly;component/MyNS/Templates/Template12345.xaml或的形式../../Templates/Template12345.xaml

这可能吗?

我是否必须从程序集的已编译资源(MyAssembly.g.resources)手动转换名称?

c# wpf xaml resourcedictionary

4
推荐指数
1
解决办法
8334
查看次数

将WPF路径转换为位图文件

我希望能够加载路径的WPF资源字典并将它们逐个输出到文件(jpg,bmp,这没关系).这将在一个类库中,MVC应用程序将访问该类以呈现为http流,因此我只在代码中执行此操作(没有XAML页面).

我已经能够加载字典并遍历路径,但是当我将图像保存到磁盘时,它们是空白的.我知道我遗漏了一些微不足道的东西,比如将路径应用到几何体,或者将其添加到包含矩形的东西中,但我的WPF体验有限.

我正在使用以下代码:

我有一个包含多个路径的WPF资源字典,如下所示:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
  <Path x:Key="Path1" Data="M 100,200 C 100,25 400,350 400,175 H 280" Fill="White" Margin="10,10,10,10" Stretch="Fill"/>
  <Path x:Key="Path2" Data="M 10,50 L 200,70" Fill="White" Margin="10,10,10,10" Stretch="Fill"/>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

以及读取和输出文件的类:

public class XamlRenderer
{
    public void RenderToDisk()
    {
        ResourceDictionary resource = null;

        Thread t = new Thread(delegate()
        {
            var s = new FileStream(@"C:\Temp\myfile.xaml", FileMode.Open);
            resource = (ResourceDictionary)XamlReader.Load(s);
            s.Close();

            foreach (var item in resource)
            {
                var resourceItem = (DictionaryEntry)item;
                var path = (System.Windows.Shapes.Path)resourceItem.Value;

                var panel = new StackPanel();

                var greenBrush …
Run Code Online (Sandbox Code Playgroud)

wpf render path bitmap resourcedictionary

4
推荐指数
1
解决办法
4267
查看次数

在Windows Phone 7中引用合并的资源字典失败

我目前正在使用MVVMLight框架构建WP7应用程序.我想在我的app.xaml中添加一个资源字典,但是当我这样做时失败了.这是app.xaml的片段

<Application.Resources>
    <!--Global View Model Locator-->
    <vm:ViewModelLocator x:Key="Locator"
                         d:IsDataSource="True" />
    <!--Merged Resource Dictionaries-->
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="View/StyleResourceDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

因为我正在使用具有密钥的ViewModelLocator,所以我收到一条错误警告我,无论是否使用密钥,我都无法混合资源.将密钥添加到我的资源字典后它看起来如下所示:

    <ResourceDictionary x:Key="resourceDictionary">
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="View/StyleResourceDictionary.xaml"/>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

在资源字典中,我有一个带有"TitleTemplate"键的样式.在任何一种情况下,当我尝试从我的一个视图中引用资源字典时,它都会失败.我的观点中的示例代码如下:

<TextBlock Name="TB_ContactNameLabel" 
           Text="contact" 
           Style="{StaticResource TitleTemplate}"/>
Run Code Online (Sandbox Code Playgroud)

设计师立即给我错误"资源'TitleTemplate'无法解析".如果我引用资源字典的键(即:resourceDictionary),则不会抛出任何错误,但它显然没有做任何事情.最后,如果我将resourceDictionary直接添加到其资源中的页面,而不是app.xaml,一切正常.我不想将它添加到我计划使用的每个视图中.我在这里错过了什么吗?

xaml resourcedictionary windows-phone-7 mvvm-light

4
推荐指数
1
解决办法
1986
查看次数

如何在Windows Phone 8中将ResourceDictionary用作StaticResource

我有一个Windows Phone 7应用程序,我正在尝试创建它的Windows Phone 8版本.

在应用程序中,我在XAML文件中定义了一个ResourceDictionary:

<ResourceDictionary
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:sys="clr-namespace:System;assembly=mscorlib">

    <sys:String x:Key="AppName">My App Name</sys:String>
    <!-- etc. -->

</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

此AppDaml在App.xaml中引用为:

<!--Application Resources-->
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Assets/Constants.xaml"/>
            <!-- etc. -->
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

然后很容易做的事情:

<TextBlock x:Name="ApplicationTitle" Text="{StaticResource AppName}"/>
Run Code Online (Sandbox Code Playgroud)

以上在Windows Phone 7中运行得非常好,但是,在Windows Phone 8中还有一个额外的Application.Resources项目<myNamespace:LocalizedStrings x:Key="LocalizedStrings"/>,当我有我的应用程序时,它不会编译,因为它抱怨

每个字典条目必须具有关联的密钥.

所以我通过代码更改为:

<!--Application Resources-->
<Application.Resources>
    <myNamespace:LocalizedStrings x:Key="LocalizedStrings"/>
    <ResourceDictionary x:Key="MainDictionary">
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Assets/Constants.xaml"/>
            <!-- etc. -->
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

现在我有另一个问题.我的应用程序编译,但它运行时抛出一个XamlParseException:

找不到具有Name/Key AppName的资源

这一切都是因为LocalizedStrings资源而发生的.有人可以帮助完成这项工作吗?

顺便说一句,我对Value Converters也有同样的问题; 如果他们以不同的方式完成,我很感激,如果有人可以提供帮助.

提前致谢.

xaml resourcedictionary valueconverter windows-phone-8

4
推荐指数
1
解决办法
1万
查看次数

为StackPanel及其内容创建样式

我想使用密钥为Stackpanels创建一个样式.此样式将位于全局ResourceDictionary中,以便在应用程序的任何位置使用.但它不仅应该设置Stackpanel的样式,还应该设置其内容.

我想像这样使用stackpanel:

<StackPanel Style="{StaticResource GlobalStackPanelStyle}">
<Button>test</Button> <-- the button style should also be defined due to the Stackpanel style
</StackPanel>
Run Code Online (Sandbox Code Playgroud)

如果所有包含按钮都应该是绿色的,那么Resourcedictionary应该如何?

wpf styles resourcedictionary

4
推荐指数
1
解决办法
8776
查看次数

如何在WPF中为ResourceDictionary Source提供文件夹结构

在WPF应用程序中,Resources.xaml(资源字典)放在Resources文件夹中,GetStarted.xaml(UserCOntrol)放在Views文件夹中.Wizard.xaml(UserControl)位于根文件夹中.

现在,在Wizard.xaml中:

<ResourceDictionary.MergedDictionaries>
    <ResousrceDictionary Source="Resources/Resources.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
Run Code Online (Sandbox Code Playgroud)

工作良好.

我不确定如何访问它在GetStarted.xaml中,

<ResourceDictionary.MergedDictionaries>
    <ResourceDictionary Source="component/Resources/Resources.xaml"></ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
Run Code Online (Sandbox Code Playgroud)

不起作用.

请帮我.我是WPF的新手.

c# wpf xaml resourcedictionary

4
推荐指数
1
解决办法
1万
查看次数

WPF VS2013:查找资源字典时发生错误

球队,

我在Visual Studio 2013中有一个简单的wpf项目.结构如下所示.错误所说的全部内容如标题"查找资源字典时发生错误"所示.我从网上尝试了许多建议并且没有耐心.每件事似乎都没问题.任何有经验的人都可以提出一些建议.提前致谢.

VS 2013 Wpf Project显示有关资源的错误

c# wpf dictionary resourcedictionary visual-studio-2012

4
推荐指数
1
解决办法
4336
查看次数

从后面的代码中的ResourceDictionary中检索值

我有一个Windows 10通用应用程序,其中包含一些用于样式的资源字典等.在一个这样的资源字典中,我有一种颜色,MyBlue我想通过后面的代码访问.这是如何实现的?

我已经尝试过this.Resources["MyBlue"],但由于MyBlue是在一个单独的资源字典中定义而不是直接在页面资源中定义,因此它不存在于此集合中.

这是我的app.xaml:

<Application.Resources>

    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="Styles/PodStyles.xaml"/>
            <ResourceDictionary Source="Styles/ButtonStyles.xaml"/>
            <ResourceDictionary Source="Styles/OfferStyles.xaml"/>
            <ResourceDictionary Source="Styles/MyStyles.xaml"/>

            <ResourceDictionary>
                <!--Global View Model Locator-->
                <vm:ViewModelLocator x:Key="Locator"
                                     d:IsDataSource="True"/>
            </ResourceDictionary>
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>

</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

xaml resourcedictionary windows-10 uwp

4
推荐指数
2
解决办法
5450
查看次数