当 WPF 中的绑定为 null 时,如何避免 xaml 警告?

Bob*_*Bob 5 c# wpf xaml

在我的 WPF 应用程序中,我有一个样式,当绑定对象不为空时,该样式用图像画笔填充矩形。该样式按照我预期的方式工作,但是当 Binding 为 null 时,我会收到有关 ImageBrush setter 值的警告。我希望我可以使用转换器或空触发器来避免这种情况,但是我仍然收到警告。有没有一种方法可以绑定到一个对象并检查它在 xaml 中是否为 null,而不会在输出窗口中收到警告?

\n\n
        <Style TargetType="Rectangle" x:Key="LightHeadRectangle">\n            <Setter  Property="Fill" Value="Red" />\n            <Style.Triggers>\n                <DataTrigger Binding="{Binding BarLight, Converter={StaticResource isNullConverter}}" Value="false">\n                    <Setter  Property="Fill">\n                        <Setter.Value>\n                            <ImageBrush Stretch="Fill" ImageSource="{Binding BarLight.OpenMount.ImagePath}" />\n                        </Setter.Value>\n                    </Setter>\n                </DataTrigger>\n            </Style.Triggers>\n        </Style>\xe2\x80\x8b\n
Run Code Online (Sandbox Code Playgroud)\n\n

更新:希望阻止通用空警告的发生,但在这种情况下我收到的具体警告是。

\n\n

System.Windows.Data 错误:2:找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement。BindingExpression:Path=BarLight.OpenMount.ImagePath; 数据项=空;目标元素是“ImageBrush”(HashCode=47952502);目标属性是“ImageSource”(类型“ImageSource”)

\n\n

更新:

\n\n

请注意,我正在使用此样式来定位多个列表框项数据模板,这可能会有所帮助。BarLight 最初也是空的。

\n

K M*_*hta 5

AFAIK 您无法在代码中关闭它们,但如果您使用的是 Visual Studio,则可以在其中关闭它们。

  1. 转到工具 -> 选项
  2. 在“调试”(位于左侧窗格)下,转到“输出窗口”
  3. 在“WPF 跟踪设置”(位于右侧窗格)下,找到“数据绑定”并将其值设置为“关闭”

话虽如此,绑定在 XAML 中默默失败是完全可以接受的。失败的绑定不会引发异常,因此不会对最终用户产生影响(只要您(开发人员)希望在不影响用户体验的某些情况下绑定失败)。

该警告只是作为开发人员的一种调试机制,以防他们预计绑定会失败。我不建议关闭此功能。

  • 也就是说,如果 WPF 提供一种机制来表示“我预计此特定绑定有时可能会失败,并且我不想收到有关此情况的警告”,那就太好了。我宁愿让“输出”窗格中显示的*任何* BindingExpression 警告作为需要调查和补救的内容,而不是接受这将是一个非空列表,我必须梳理它以确定哪个是问题,哪个是问题不是。 (9认同)