标签: staticresource

使用资源作为转换会导致绑定转换器

当我尝试将valueconverter从定义的枚举状态绑定到画笔时,我的XAML设计器中出现错误:

找不到'OKStatus'资源.

该应用程序运行良好的运行时,但我无法在设计器中看到我的GUI.我的资源在color.xaml文件中定义,该文件在运行时读取.所有代码都在同一名称空间内

我的XAML:

的xmlns:配置= "CLR的命名空间:App.MyNamespace"

<UserControl.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="c:\Skins\Colors.xaml" />
            <ResourceDictionary Source="c:\Skins\Common.xaml" />                
        </ResourceDictionary.MergedDictionaries>
        <config:StatusConverter x:Key="StateConverter" />
        <config:BoolConverter x:Key="BoolConverter" />
        <config:BooleanConverter x:Key="BooleanConverter" />
    </ResourceDictionary>
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)

状态

我的转换器:

[ValueConversion(typeof(bool), typeof(Brush))]
public class BoolConverter : IValueConverter
{
    public object Convert(object value, Type targetType,
        object parameter, CultureInfo culture)
    {
        bool state = (bool)value;

        FrameworkElement FrameElem = new FrameworkElement();

        if (state == true)
            return (FrameElem.FindResource("OKStatus") as Brush);
        else
            return (FrameElem.FindResource("ErrorStatus") as Brush);
    }

    public object ConvertBack(object value, Type targetType,
        object parameter, …
Run Code Online (Sandbox Code Playgroud)

wpf valueconverter staticresource

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

如何在jBoss AS 7中配置静态资源

我想将图像上传到服务器,将它们存储在文件系统(服务器外部)中,然后在我的JSF页面上显示它们.

我想找到这样的东西:

<?xml version="1.0" encoding="UTF-8"?>
<Context allowLinking="true" cookies="true" crossContext="true" override="true">
    <Resources allowLinking="true"
        className="com.triplemind.site.engine.SourceResolverContext"
        homeDir="/home/myapp/files" />
</Context>   
Run Code Online (Sandbox Code Playgroud)

我找到了一些解决方案,但我想知道是否有更好的方法来做到这一点.

  1. 在JBOSS AS 7中配置静态资源(未回答)
  2. 在AS7中替换context.xml?访问WAR以外的文件?(无解答)

我发现有jBoss文档:

  1. static-resources元素
  2. AdminGuide容器配置

任何帮助将不胜感激.提前致谢

java jboss staticresource jboss7.x

10
推荐指数
1
解决办法
8355
查看次数

合并字典中共享的静态资源

我目前正在研究可以动态应用于我的应用程序的样式和模板字典.在这个"新想要的"动态行为之前,我有几个资源字典,每个样式控件一个,我在App.xaml中合并:

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

现在,我希望我的应用程序被设置样式,所以我决定将我以前的所有资源合并到一个名为"MyFirstTemplates"的新资源中,并且只将这个字典添加到App.xaml中.

新词典"MyFirstTemplates.xaml":

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">"
    <ResourceDictionary.MergedDictionaries>
        <ResourceDictionary Source="ColorsDictionary.xaml"/>
        <ResourceDictionary Source="ControlsTemplatesDictionary.xaml"/>
    </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
Run Code Online (Sandbox Code Playgroud)

新的App.xaml:

<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="MyFirstTemplates.xaml"/>
        </ResourceDictionary.MergedDictionaries>
        <Style TargetType="{x:Type Window}"/>
    </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

注意:Window的默认样式是更正WPF 4的错误,请参阅将合并字典添加到合并字典

现在我已经做了这个改变,我不能再使用"ColorsDictionary.xaml"中的颜色资源作为"ControlsTemplateDictionary.xaml"中的StaticResource了.如果我改回到在app.xaml中合并这些文件,一切正常.为了使它工作,我必须为DynamicResource更改这些StaticResource.你知道为什么这不再起作用吗?

谢谢 :-)

wpf merge dictionary staticresource

9
推荐指数
1
解决办法
4162
查看次数

如何在ResourceDictionary中使用转换器

当我在Window上将它用作StaticResource时,我有一个很好用的转换器,如下所示

<UserControl.Resources>
           <local:ValidationErrorConverter x:Key="validationErrorConverter"/>       
</UserControl.Resources>
Run Code Online (Sandbox Code Playgroud)

我有一个ResourceDictionary来定义我的控件ControlTemplates和Styles,我无法弄清楚在哪里引用我的转换器作为StaticResource,以便能够在我的样式上使用它如下

<Style.Triggers>
        <Trigger Property="Validation.HasError" Value="true">
            <Setter Property="ToolTip" Value="{Binding 
RelativeSource={RelativeSource Self}, 
Path=(Validation.Errors).CurrentItem, 
Converter={StaticResource HERE??}}"/>
        </Trigger>
    </Style.Triggers>
Run Code Online (Sandbox Code Playgroud)

c# wpf xaml resourcedictionary staticresource

8
推荐指数
1
解决办法
9432
查看次数

如何以编程方式将C#中的Image Source设置为XAML Static Resource?

我有这样ResourceDictionaryMain.xaml:

<Window.Resources>
    <ResourceDictionary>
        <BitmapImage x:Key="Customer" UriSource="Icons/customer.png"/>
        <BitmapImage x:Key="Project" UriSource="Icons/project.png"/>
        <BitmapImage x:Key="Task" UriSource="Icons/task.png"/>
    </ResourceDictionary>
</Window.Resources>
Run Code Online (Sandbox Code Playgroud)

我最初使用以下方式设置图像:

<Image Name="TypeIcon" HorizontalAlignment="Left" VerticalAlignment="Center"
    Source="{StaticResource Customer}" Height="16" Width="16"/>
Run Code Online (Sandbox Code Playgroud)

我试图改变TypeIconSource,从客户项目投资在C#方法.

我尝试过使用:

TypeIcon.Source = "{StaticResource Project}";
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

无法隐式转换stringSystem.Windows.Media.ImageSource

我尝试使用定义图像new ImageSource(),但这也不起作用.

如何Source在C#中以编程方式更改图像?

c# wpf xaml staticresource

8
推荐指数
2
解决办法
7万
查看次数

在WPF中,如何引用在不同XAML文件中定义的静态资源?

在WPF中,如何引用在不同XAML文件中定义的静态资源?它在同一个项目中.

c# wpf xaml staticresource

7
推荐指数
1
解决办法
6789
查看次数

Silverlight 4 - 在另一个ResourceDictionary中使用StaticResource

如果我有这些词典:

dict1.xaml: <Color x:Key="Color1">Red</Color>

dict2.xaml: <SolidColorBrush x:Key="Brush1" Color={StaticResource Color1} />

这有效:

App.xaml中:

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

SomePage.xaml:

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

这不是:

App.xaml在应用程序级别合并.

我收到有关未找到Color1的错误.

为什么是这样 ?/它有办法解决吗?我知道这个例子很简单,但真正的例子太长了.基本上我只是想在不同的文件中组织我的样式和模板:

  • 一个颜色
  • 一个用于隐式样式
  • 许多用于显式样式

编辑:奇怪的是,如果我在代码中执行此操作Application_Startup,在设置RootVisual属性之前,我没有收到错误...我只是为什么感到困惑!

silverlight resourcedictionary staticresource

7
推荐指数
1
解决办法
8022
查看次数

WPF控件作为资源字典中的StaticResource,用于多个WPF Windows?

我有一个Button控件作为资源字典中的资源,如下所示:

<!--ButtonResources.xaml file-->
<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Button x:Key="buttonResource" Content={Binding BoundText}/>
</ResourceDictionary>
<!--ButtonResources.xaml file-->
Run Code Online (Sandbox Code Playgroud)

我现在用这以上按钮控制绑定到ContentControl中控制的内容属性2个不同的视窗的.xaml文件,其中每个Window都有自己的DataContext,从而每一个窗口应该显示Content基于其上述按钮控制的ViewModel's BoundText属性值,如下对每个窗口.

<Window x:Class="TestClass1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <Window.Resources>
        <ResourceDictionary>
            <ResourceDictionary.MergedDictionaries>
                <ResourceDictionary Source="ButtonResources.xaml"/>
            </ResourceDictionary.MergedDictionaries>
        </ResourceDictionary>
    </Window.Resources>
    <Grid>
        <ContentControl Content={StaticResource buttonResource}/>
    </Grid>
</Window>
Run Code Online (Sandbox Code Playgroud)

但是,问题是两个Window都显示了BoundText属性的相同值,这意味着两个WPF Windows都具有来自资源的相同按钮控制实例,在Windows中都使用.

如何解决此问题,以便每个窗口从资源获取单独的按钮控件,并仍然从他们自己的ViewModel显示属性的不同值?BoundText

编辑: 由于下面提到的原因MSDN,我不能使用x:Shared ="False"属性来解决此问题:

•包含项的ResourceDictionary不得嵌套在另一个ResourceDictionary中.例如,对于已经是ResourceDictionary项的Style内的ResourceDictionary中的项,您不能使用x:Shared.

wpf xaml .net-4.0 resourcedictionary staticresource

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

CompositeCollection/CollectionViewSource混淆

我对使用这些类型时数据绑定的工作方式感到有些困惑.

我读过你不能做以下事情

public partial class Window1 : Window
    {
        public ObservableCollection<string> Items { get; private set; }

        public Window1()
        {
            Items = new ObservableCollection<string>() { "A", "B", "C" };
            DataContext = this;
            InitializeComponent();
        }
    }

<Window x:Class="WpfApplication25.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <ComboBox>
        <ComboBox.ItemsSource>
            <CompositeCollection>
                <CollectionContainer Collection="{Binding Items}"/>
            </CompositeCollection>
        </ComboBox.ItemsSource>
    </ComboBox>
</Window>
Run Code Online (Sandbox Code Playgroud)

因为CompositeCollection没有datacontext的概念,因此使用绑定的任何内容都必须设置Source属性.如下:

<Window x:Class="WpfApplication25.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Window.Resources>
        <CollectionViewSource x:Key="list" Source="{Binding Items}"/>
    </Window.Resources>

    <ComboBox Name="k">
        <ComboBox.ItemsSource>
            <CompositeCollection>
               <CollectionContainer Collection="{Binding Source={StaticResource list}}"/>
            </CompositeCollection>
        </ComboBox.ItemsSource>
    </ComboBox>
</Window>
Run Code Online (Sandbox Code Playgroud)

但那是怎么回事?它将源设置为某些东西,但是在某些情况下,CollectionViewSource使用datacontext(因为它没有明确设置源).

因为"list"是在Window的资源中声明的,这是否意味着它获取了Windows DataContext?在这种情况下,为什么以下也不起作用?

<Window x:Class="WpfApplication25.Window1"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">

    <Window.Resources> …
Run Code Online (Sandbox Code Playgroud)

wpf datacontext compositecollection collectionviewsource staticresource

7
推荐指数
1
解决办法
2443
查看次数

DataTemplate中的StaticResource引用

从ResourceDictionary中定义的DataTemplate内部引用StaticResources时,我遇到了一些奇怪的行为.

在这个例子中,我使用ResourceDictionary中定义的DataTemplate填充数字1到9的列表框.

这是MainWindow.xaml代码:

<Window x:Class="testResources.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="MainWindow"
    Width="525"
    Height="350">
<Grid>
    <ListBox Width="100" ItemTemplate="{StaticResource NumberTemplate}">
        <ListBox.ItemsSource>
            <Int32Collection>1,2,3,4,5,6,7,8,9</Int32Collection>
        </ListBox.ItemsSource>
    </ListBox>
</Grid>
Run Code Online (Sandbox Code Playgroud)

NumberTemplate在ResourceDictionary1.xaml中定义:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
<DataTemplate x:Key="NumberTemplate">
    <Grid Background="{StaticResource CoolNumbersColor}">
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="35" />
        </Grid.ColumnDefinitions>
        <TextBox Grid.Column="0" Background="{StaticResource CoolNumbersColor}" Text="{Binding Mode=OneWay}" />
    </Grid>
</DataTemplate>
Run Code Online (Sandbox Code Playgroud)

StaticResource CoolNumbersColor在App.xaml中定义ResourceDictionary1.xaml.这是我的App.xaml文件:

<Application x:Class="testResources.App" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" StartupUri="MainWindow.xaml">
<Application.Resources>
    <ResourceDictionary>
        <SolidColorBrush x:Key="CoolNumbersColor">GreenYellow</SolidColorBrush>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="pack://application:,,,/ResourceDictionary1.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>
Run Code Online (Sandbox Code Playgroud)

首先,我可以在Visual Studio 2010设计器中看到预期的行为.确实会出现一个彩色的数字列表.但是在尝试运行此示例时,我收到错误

"找不到名为'CoolNumbersColor'的资源.资源名称区分大小写"

我不明白为什么会这样.CoolNumbersColor评估是否以某种方式推迟?从词汇上讲,它位于合并的resourcedictionary之前.

使这项工作的唯一方法(除了使用DynamicResources)是创建第二个ResourceDictionary(例如ResourceDictionary2.xaml),CoolNumbersColor在那里定义并将它们全部合并为ResourceDictionary.MergedDictionaries:

<Application x:Class="testResources.App" …
Run Code Online (Sandbox Code Playgroud)

wpf xaml datatemplate staticresource

7
推荐指数
1
解决办法
6898
查看次数