将内容演示者内容绑定到可视元素

时间:2016-12-15 22:20:34

标签: c# wpf mvvm data-binding

我有一个项目控件与项目源,我希望它显示预览

<ItemsControl ItemsSource="{Binding Path=Children}">
    <ItemsControl.ItemTemplate>
        <DataTemplate>                                    
            <ContentControl>
                <ContentControl.ContentTemplate>
                    <DataTemplate>
                        <ContentPresenter Content="{Binding Preview}"/>
                     </DataTemplate>
                </ContentControl.ContentTemplate>
            </ContentControl>
        </DataTemplate>
    </ItemsControl.ItemTemplate>
</ItemsControl>

预览是一个网格

public class Child
{
    public Grid Preview { get; set; }
    public Child()
    {
        Preview = new Grid();
        Preview.Children.Add(new TextBlock() { Text = "Test"});
        Preview.Background = new SolidColorBrush(Colors.Red);
    }
}    

但它似乎没有渲染任何东西,我错过了什么?

1 个答案:

答案 0 :(得分:0)

尝试这样,

 <ItemsControl ItemsSource="{Binding Children}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <ContentPresenter Content="{Binding Preview}"/>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

<ItemsControl ItemsSource="{Binding Path=Children}">
        <ItemsControl.ItemTemplate>
            <DataTemplate>
                <ContentControl Content="{Binding}">
                    <ContentControl.ContentTemplate>
                        <DataTemplate>
                            <ContentPresenter Content="{Binding Preview}"/>
                        </DataTemplate>
                    </ContentControl.ContentTemplate>
                </ContentControl>
            </DataTemplate>
        </ItemsControl.ItemTemplate>
    </ItemsControl>

没有datacontext,因此它没有显示任何内容。