首页 文章

在WPF中绑定为空时,如何避免xaml警告?

提问于
浏览
3

在我的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 回答

  • 1

    AFAIK你不能在代码中关闭它们,但是如果你使用的是Visual Studio,你可以在那里关闭它们 .

    • 转到工具 - >选项

    • 在调试下(在左窗格中),转到输出窗口

    • 在“WPF跟踪设置”下(在右窗格中),找到“数据绑定”并将其值设置为“关闭”

    话虽如此,它的经验并没有受到影响) .

    警告就像开发人员的调试机制一样,以防他们不希望绑定失败 . 我不建议关掉它 .

  • 3

    将您的ImageBrush放在一个单独的资源中将解决问题 .

    <ImageBrush x:Key="brush" Stretch="Fill" ImageSource="{Binding BarLight.OpenMount.ImagePath}" />
        <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" Value="{StaticResource brush}">
                    </Setter>
                </DataTrigger>
            </Style.Triggers>
        </Style>
    

相关问题