在我的WPF应用程序中,我有一个样式,当绑定对象不为null时,用图像画笔填充矩形 . 样式的工作方式与我期望的方式相同,但是当Binding为null时,我会收到有关ImageBrush setter值的警告 . 我希望我可以使用转换器或空触发器避免这种情况但是,我仍然得到警告 . 有没有一种方法可以绑定到一个对象并检查它是否在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:路径= BarLight.OpenMount.ImagePath;的DataItem = NULL; target元素是'ImageBrush'(HashCode = 47952502); target属性是'ImageSource'(类型'ImageSource')
更新:
请注意,我使用此样式来定位多个listboxitem数据模板可能会有所帮助 . BarLight也是null .
2 回答
AFAIK你不能在代码中关闭它们,但是如果你使用的是Visual Studio,你可以在那里关闭它们 .
转到工具 - >选项
在调试下(在左窗格中),转到输出窗口
在“WPF跟踪设置”下(在右窗格中),找到“数据绑定”并将其值设置为“关闭”
话虽如此,它的经验并没有受到影响) .
警告就像开发人员的调试机制一样,以防他们不希望绑定失败 . 我不建议关掉它 .
将您的ImageBrush放在一个单独的资源中将解决问题 .