【问题标题】:is that possible to set ImageSource as null in wpf是否可以在 wpf 中将 ImageSource 设置为 null
【发布时间】:2020-04-22 06:02:03
【问题描述】:

有谁知道如何在 xaml 中将 ImageSource 设置为 null。 像这样的

<ImageSource x:Key="tt">null</ImageSource>

谢谢!

【问题讨论】:

  • 它不是那样工作的,通过声明 -Tag 你已经调用了构造函数。您可以尝试类似的方法:。我认为它可能也不起作用,因为系统可能无法区分丢失的键或空值。因为,如果缺少键,至少 TryFindResource() 会返回 null。
  • 另一个想法,我只是假设你想用键“ll”定义一个资源,它应该是一个值为 null 的 ImageSource。但也许你可以解释一下你想做什么,这样会更容易帮助你。
  • 这里是这样,我使用ImageSource作为DynamicResource,Resources中有很多ImageSource。我也使用ImageBrush。ImageBrush的属性ImageSource与ImageSource一一引用。所以,当我更改 ImageSource 时,ImageBrush 得到更新。问题不是所有的 ImageSource 都应该有值。在某些情况下,ImageSource 应该为 null。有什么建议吗?
  • 根本不定义资源怎么样。如果我没记错的话,对于“DynamicResource”来说,缺少的资源应该不是问题。 (与 StaticResource 相反,如果 ResourceKey 丢失,则会引发异常。) - 事实上,我只是尝试过。它有效,缺少 Key 的 DynamicResource 是有效的。 StaticResource 会抛出异常。使用 也可以。所有这些解决方案都在代码下显示蓝色波浪线,因为它是 XAML 编辑器中的 XAML 错误(但不是在运行时)。
  • 另外, 不能是 下的第一个元素,否则 XAML 会将 Resources 设置为 null 并为每个附加元素引发错误。除非您在 . 中明确定义

标签: wpf xaml imagesource


【解决方案1】:

在 XAML 中,这将是 {x:Null}(请参阅 documentation

您可能需要使用与示例中不同的方式:

<YourControl x:Key="tt" Content="{x:Null}"></ImageSource>

或者使用您要设置为 null 的实际属性而不是 Content

如果您的 YourControl 有 ImageSource 属性,则应该类似于:

<YourControl ImageSource="{x:Null}">

【讨论】:

    【解决方案2】:

    您可以像这样在 XAML 中将属性分配给 null

    Source="{x:Null}"
    

    您不能创建 ImageSource 的实例,因为它是一个抽象类。

    您可以定义一个BitmapImage,然后您可以以某种方式设置UriSourceStreamSource 属性。

    【讨论】:

    • 使用空的 BitmapImage 得到这个错误“必须设置属性 'UriSource' 或属性 'StreamSource'”
    • @pivnothebearrrrrrrrr:对。只需将属性设置为{x:Null} 或根本不设置它。定义一个不返回任何东西的资源是很有意义的。
    • @pivnothebearrrrrrrrr:这是否回答了您的问题或您当前的问题是什么?
    猜你喜欢
    • 1970-01-01
    • 2012-04-26
    • 2010-12-13
    • 2013-12-20
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多