如何在XAML中引用数据绑定控件

时间:2014-04-08 14:29:59

标签: wpf xaml data-binding

我在代码隐藏中以编程方式创建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>  

2 个答案:

答案 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>