我正在尝试将Viewbox
绑定到动态创建的Canvas
,如下所示:
<ListBox.ItemTemplate>
<DataTemplate>
<DockPanel>
<Viewbox>
<ContentPresenter Content="{Binding Canvas}"/>
</Viewbox>
</DockPanel>
</DataTemplate>
</ListBox.ItemTemplate>
只要Canvas
没有任何子女,这种情况就可以正常工作,但是Canvas
有子女的情况很快就会显示出来。我在这里缺少什么?
答案 0 :(得分:2)
你怎么知道它有效? Canvas
只是Panel
,宽度/高度为零。即使它有任何孩子,它的尺寸仍然是0,0。您必须明确将Width
和Height
设置为非零值才能显示。将以下代码段粘贴到XamlPad
或仅在您自己的应用中进行测试。现在,删除Width
或Height
,它将消失。
<Viewbox>
<ContentPresenter>
<ContentPresenter.Content>
<Canvas Background="Red" Width="1" Height="1">
<TextBlock Canvas.Left="10" Canvas.Top="20" Text="123" />
</Canvas>
</ContentPresenter.Content>
</ContentPresenter>
</Viewbox>
答案 1 :(得分:0)
忘了我问过:-)
我在创建canvas的子项时引发了异常,这反过来又导致画布无法显示。我很伤心地说,这不是我第一次犯这样的错误,而且它可能不是最后一次可以:
TextBlock tb = new TextBlock();
tb.SetValue(Canvas.LeftProperty, 5);
tb.SetValue(Canvas.TopProperty, 5);
“5”不是“Left”或“Top”的有效值。它当然应该是
TextBlock tb = new TextBlock();
tb.SetValue(Canvas.LeftProperty, 5.0);
tb.SetValue(Canvas.TopProperty, 5.0);
因为它是作为数据绑定的一部分创建的,所以没有显示异常对话框。总而言之... DOOOOH :-) : - )