带有自定义控件的MVVM ItemTemplate

时间:2016-08-20 14:06:02

标签: c# xaml mvvm itemtemplate

我正在按照本教程学习如何使用ListView ItemTemplate显示人员列表:http://www.wpf-tutorial.com/listview-control/listview-data-binding-item-template/

我理解一般概念,但我坚持一点。

这是ItemTemplate示例:

    <Grid>
            <ListView Margin="10" Name="lvDataBinding" ItemsSource"={Binding MyPersonsList}">
                    <ListView.ItemTemplate>
                            <DataTemplate>
                                    <WrapPanel>
                                            <TextBlock Text="Name: " />
                                            <TextBlock Text="{Binding Name}" FontWeight="Bold" />
                                            <TextBlock Text=", " />
                                            <TextBlock Text="Age: " />
                                            <TextBlock Text="{Binding Age}" FontWeight="Bold" />
                                            <TextBlock Text=" (" />
                                            <TextBlock Text="{Binding Mail}" TextDecorations="Underline" Foreground="Blue" Cursor="Hand" />
                                            <TextBlock Text=")" />
                                    </WrapPanel>
                            </DataTemplate>
                    </ListView.ItemTemplate>
            </ListView>
    </Grid>

我无法理解的是,如何用这样的自定义控件替换TextBlocks:

    <Grid>
            <ListView Margin="10" Name="lvDataBinding" ItemsSource"={Binding MyPersonsList}">
                    <ListView.ItemTemplate>
                            <DataTemplate>
                                    <WrapPanel>
                                            <MyPersonDisplayer Person="{Binding ???}"/>
                                    </WrapPanel>
                            </DataTemplate>
                    </ListView.ItemTemplate>
            </ListView>
    </Grid>

如何告诉模板我想用源项设置MyPersonDisplayer控件属性Person

编辑:

我尝试仅添加Person={Binding},但它会显示此错误。

CompilError

1 个答案:

答案 0 :(得分:1)

我认为MenuItemViewModel 中的实施MenuItemView 属性可能存在问题。您是否已将MenuItemViewModel 属性实施为 DependencyProperty ?也许你可以参考这个post