如果WPF中的Rect图形为空,如何停止?

时间:2018-07-16 15:13:08

标签: c# wpf binding drawing

这似乎应该很简单,但我无法使它正常工作。

我在<Rectangle>上有一个<Canvas>,其中DataContext上的<Rectangle>绑定到Rect上,我试图绘制并带有<Rectangle>个属性Canvas.Left="{Binding Left}"Width="{Binding Width}"(垂直组件类似)。

如果那里有一个矩形,这很好,但是在绑定的Rect为空的情况下(即IsEmpty == True),它给我带来了Value produced by BindingExpression is not valid for target property的无穷大错误值。

我尝试使用Visibility属性上的数据触发器将Collapsed设置为IsEmpty,并将可见性设置为折叠,我尝试在父画布上执行相同操作,但是无论我做什么,我仍然会遇到这些绑定表达式错误。

有什么办法可以简单地使它变成“如果它是空的,甚至不要尝试绘制它?”

1 个答案:

答案 0 :(得分:1)

我想我用类似的东西解决了类似的问题:

<Rectangle Canvas.Left="{Binding Left}"
       Canvas.Top="{Binding Top}">
    <Rectangle.Style>
        <Style TargetType="{x:Type Rectangle}">
            <Style.Triggers>
                <DataTrigger Binding="{Binding IsEmpty}" Value="True">
                    <Setter Property="Canvas.Left" Value="0"/>
                    <Setter Property="Canvas.Top" Value="0"/>
                    <Setter Property="Visibility" Value="Collapsed"/>
                </DataTrigger>             
            </Style.Triggers>
        </Style> 
    </Rectangle.Style>
</Rectangle>

因此,基本上,是“破坏”与无效DataContext值的绑定,并在XAML中设置一个固定值。

  

注意:这是手写XAML,可能包含语法错误。