如何将URI设置为来自另一个程序集的ResourceDictionary中的对象?

Mathias SiigNørregaard

什么有效

我正在使用一个名为“ WPF Animated GIF”的插件,该插件使我可以将gif动画设置为图像的图像源。我的问题是我正在使用另一个项目中的图像。这些图像是ResourceDictionary中的键,如下所示:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    ...
    <ImageSource x:Key="ImgSyncFailed">Images/Sync Failed.png</ImageSource>
    <ImageSource x:Key="ImgSyncSucceeded">Images/Sync Succeeded.png</ImageSource>
    <ImageSource x:Key="ImgSyncing">Images/Syncing-Small.gif</ImageSource>
</ResourceDictionary>

资源字典通过引用和XAML添加到另一个项目中:

<Window.Resources>
    <ResourceDictionary Source="pack://application:,,,/ResourcesDictionary;component/Dictionary.xaml"/>
</Window.Resources>

当您想通过XAML添加图像时,这工作得很好:

<Button x:Name="SyncButton" Focusable="False" Background="{x:Null}" BorderBrush="{x:Null}" Foreground="{x:Null}" Height="100" Width="100" Click="SyncButton_OnClick">
    <Image x:Name="SyncImage" gif:ImageBehavior.AnimatedSource="{StaticResource ImgSyncSucceeded}" HorizontalAlignment="Center" VerticalAlignment="Center" Width="100" Height="100"/>
</Button>

什么不起作用

当我切换按钮的图像时,我是通过代码来完成的:

    private void ChangeSyncImage()
    {
        switch (syncStatus)
        {
            case SyncStatus.Synced:
                ...
            case SyncStatus.Desynced:
                ...
            case SyncStatus.Syncing:
                var img3 = new BitmapImage();
                img3.BeginInit();
                img3.UriSource = new Uri("pack://application:,,,/SmartFridgeApplication;component/Images/Syncing-Small.gif");
                img3.EndInit();
                ImageBehavior.SetAnimatedSource(SyncImage, img3);
                break;
        }
    }

我不喜欢这样设置,并且现在不起作用,因为该路径设置为同一项目中的“图像”。

那么,如何将其设置为使用XAML代码中的StaticResources?

迈克

资源字典使用查找树,因此首先将查找控件资源,然后将查找可视树,直到找到资源为止,只要您在可视树中的输入高于默认值,便会查找值将覆盖

但是,当您使用后面的代码绕过静态资源时,如果您断开连接,则将断开连接TryFindResource(ResourceKey),将使资源字典查找保持完整

所以

ImageBehavior.SetAnimatedSource(SyncImage, TryFindResource("ImgSyncSucceeded"));

静态资源也应该是静态的,即不要更改,因此使用动态资源可以帮助https://msdn.microsoft.com/zh-cn/library/ms748942%28v=vs.110%29.aspx

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将IBOutlet设置为对另一个对象的引用

来自分类Dev

如何将IBOutlet设置为对另一个对象的引用

来自分类Dev

如何将Python中另一个类的属性值设置为属性

来自分类Dev

如何将一个类别的对象分组为另一个类别中的对象数组?

来自分类Dev

如何将一个变量设置为另一个变量的总值?

来自分类Dev

如何将一个方法设置为另一个方法的参数

来自分类Dev

如何将一个对象投射到另一个对象中?

来自分类Dev

如何将Text设置为另一个类或从另一个类找到findViewById?

来自分类Dev

Javascript:如何将嵌套对象重构为另一个对象?

来自分类Dev

如何将一个值设置为一个类中的变量并从另一个类中获取该变量的值?

来自分类Dev

无法将关系对象设置为CoreData中的另一个对象

来自分类Dev

如何将 DEFINE 变量设置为等于 PL/SQL 中另一个已定义表的选择

来自分类Dev

如何将批处理变量设置为另一个脚本的输出

来自分类Dev

如何将div的最小高度设置为另一个div的高度?

来自分类Dev

如何将TextView的文本设置为另一个类的整数值

来自分类Dev

如何将临时变量设置为基于另一个表的值

来自分类Dev

如何将div元素的高度设置为与另一个div相同

来自分类Dev

黑色时如何将BGR图像设置为另一个图像?

来自分类Dev

如何将现有字段设置为另一个表的外键?

来自分类Dev

如何将 index.html 设置为另一个页面,而不是主页

来自分类Dev

如何将变量标识符设置为另一个变量的内容?

来自分类Dev

如何将另一个类的属性值设置为 XAML 属性

来自分类Dev

将变量设置为等于存储在另一个文件中的对象(JavaScript)

来自分类Dev

将变量设置为等于存储在另一个文件中的对象(JavaScript)

来自分类Dev

将精灵的大小设置为Unity中的另一个对象

来自分类Dev

如何将模拟对象注入到另一个已经模拟的对象中

来自分类Dev

如何将实体属性与来自另一个实体的对象列表的对象进行映射?

来自分类Dev

Angularfire:如何将一个对象放入$ firebaseArray中的另一个对象?

来自分类Dev

如何将一个对象添加到另一个对象的值中

Related 相关文章

  1. 1

    如何将IBOutlet设置为对另一个对象的引用

  2. 2

    如何将IBOutlet设置为对另一个对象的引用

  3. 3

    如何将Python中另一个类的属性值设置为属性

  4. 4

    如何将一个类别的对象分组为另一个类别中的对象数组?

  5. 5

    如何将一个变量设置为另一个变量的总值?

  6. 6

    如何将一个方法设置为另一个方法的参数

  7. 7

    如何将一个对象投射到另一个对象中?

  8. 8

    如何将Text设置为另一个类或从另一个类找到findViewById?

  9. 9

    Javascript:如何将嵌套对象重构为另一个对象?

  10. 10

    如何将一个值设置为一个类中的变量并从另一个类中获取该变量的值?

  11. 11

    无法将关系对象设置为CoreData中的另一个对象

  12. 12

    如何将 DEFINE 变量设置为等于 PL/SQL 中另一个已定义表的选择

  13. 13

    如何将批处理变量设置为另一个脚本的输出

  14. 14

    如何将div的最小高度设置为另一个div的高度?

  15. 15

    如何将TextView的文本设置为另一个类的整数值

  16. 16

    如何将临时变量设置为基于另一个表的值

  17. 17

    如何将div元素的高度设置为与另一个div相同

  18. 18

    黑色时如何将BGR图像设置为另一个图像?

  19. 19

    如何将现有字段设置为另一个表的外键?

  20. 20

    如何将 index.html 设置为另一个页面,而不是主页

  21. 21

    如何将变量标识符设置为另一个变量的内容?

  22. 22

    如何将另一个类的属性值设置为 XAML 属性

  23. 23

    将变量设置为等于存储在另一个文件中的对象(JavaScript)

  24. 24

    将变量设置为等于存储在另一个文件中的对象(JavaScript)

  25. 25

    将精灵的大小设置为Unity中的另一个对象

  26. 26

    如何将模拟对象注入到另一个已经模拟的对象中

  27. 27

    如何将实体属性与来自另一个实体的对象列表的对象进行映射?

  28. 28

    Angularfire:如何将一个对象放入$ firebaseArray中的另一个对象?

  29. 29

    如何将一个对象添加到另一个对象的值中

热门标签

归档