【发布时间】:2015-05-30 23:32:00
【问题描述】:
在我的 WPF 应用程序中,当绑定对象不为空时,我有一个用图像画笔填充矩形的样式。该样式按我预期的方式工作,但是当 Binding 为空时,我会收到有关 ImageBrush 设置器值的警告。我希望我可以使用转换器或空触发器来避免这种情况,但我仍然收到警告。有没有一种方法可以绑定到一个对象并在 xaml 中检查它是否为 null 而不会在输出窗口中收到警告?
<Style TargetType="Rectangle" x:Key="LightHeadRectangle">
<Setter Property="Fill" Value="Red" />
<Style.Triggers>
<DataTrigger Binding="{Binding BarLight, Converter={StaticResource isNullConverter}}" Value="false">
<Setter Property="Fill">
<Setter.Value>
<ImageBrush Stretch="Fill" ImageSource="{Binding BarLight.OpenMount.ImagePath}" />
</Setter.Value>
</Setter>
</DataTrigger>
</Style.Triggers>
</Style>
更新:希望阻止发生一般的空警告,但我在这种情况下得到的具体警告是。
System.Windows.Data 错误:2:找不到目标元素的管理 FrameworkElement 或 FrameworkContentElement。 BindingExpression:Path=BarLight.OpenMount.ImagePath;数据项=空;目标元素是“ImageBrush”(HashCode=47952502);目标属性是“ImageSource”(输入“ImageSource”)
更新:
请注意,我使用这种样式来定位多个 listboxitem 数据模板可能会有所帮助。还有 BarLight,最初为 null。
【问题讨论】:
-
你得到什么警告?
-
你不是也绑定到 BarLight.OpenMount,BarLight 可以为 null,因此尝试从 null 获取 .OpenMount 是个问题吗?
-
在你的绑定库中抛出一个
TargetNullValue或FallbackValue来处理它。 -
@TheodosiusVonRichthofen 是的,但即使逻辑返回 true,它仍然会通过 ImageBrush setter 的警告,在这种情况下不会被命中。
-
@ChrisW。不,这两种方法都不会停止警告消息。