我在代码隐藏中以编程方式创建Canvas
个对象,并将它们添加到ListBox.Items
。现在,我想为DataTemplate
创建一个ListBox
,显示带有边框和高光的Canvas
个对象。
在此之前,我在Images
而不是ListBox
中使用了Canvases
,并且能够绑定到BitmapImage
作为Image.Source
属性,这工作:
<ListBox Name="LayoutListBox">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Margin="20,0" BorderBrush="Black" BorderThickness="2" Width="195" Height="195">
<Grid>
<Image Source="{Binding}" Stretch="Uniform" />
// ...Some overlays and such
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListBox>
但是现在ListBox.Items
正在使用Canvas
个对象,我无法弄清楚如何从XAML中引用它们。
<ListBox Name="LayoutListBox">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Margin="20,0" BorderBrush="Black" BorderThickness="2" Width="195" Height="195">
<Grid>
----HOW DO I REFERENCE MY CANVAS FROM HERE?-----
// ...Some overlays and such
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListBox>
答案 0 :(得分:1)
知道了,我需要ContentPresenter
。
<ListBox Name="LayoutListBox">
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Margin="20,0" BorderBrush="Black" BorderThickness="2" Width="195" Height="195">
<Grid>
<ContentPresenter Content="{Binding}"/>
// ...Some overlays and such
</Grid>
</Border>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ListBox>
答案 1 :(得分:0)
在Canvas
中绑定这样的绑定。例如,您想要绑定到Width
Canvas
属性
<ListBox>
<ListBox.ItemTemplate>
<DataTemplate>
<Grid>
<Canvas Width="{Binding RelativeSource={RelativeSource AncestorType=ListBox},Path=Items}"/>
</Grid>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>