这似乎应该很简单,但我无法使它正常工作。
我在<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
,并将可见性设置为折叠,我尝试在父画布上执行相同操作,但是无论我做什么,我仍然会遇到这些绑定表达式错误。
有什么办法可以简单地使它变成“如果它是空的,甚至不要尝试绘制它?”
答案 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,可能包含语法错误。