ListView就像WindowsLiveMessenger

时间:2011-04-24 17:57:38

标签: wpf listview

    <ListView Margin="0" Background="White" ItemContainerStyle="{DynamicResource ListViewItemStyle}" ItemTemplate="{DynamicResource DataTemplate}">
        <ListView.Resources>
            <Style x:Key="ListViewItemStyle" TargetType="{x:Type ListViewItem}">
                <Setter Property="Template">
                    <Setter.Value>
                        <ControlTemplate TargetType="{x:Type ListViewItem}">
                            <Grid/>
                        </ControlTemplate>
                    </Setter.Value>
                </Setter>
            </Style>
            <DataTemplate x:Key="DataTemplate">
                <Grid Width="Auto">
                    <Label Content="" HorizontalAlignment="Center" Margin="62,8,8,8" Width="100" VerticalAlignment="Center" Height="30"/>
                    <Image HorizontalAlignment="Left" Margin="8,8,0,8" Width="50" VerticalAlignment="Stretch" Height="30"/>
                </Grid>
            </DataTemplate>
        </ListView.Resources>
        <ListViewItem>
        </ListViewItem>
    </ListView>

我是新来的混合!! 如何从包含这两个控件的代码中添加项目

这个问题类似于 How to write ListViewItem that contain image , text and button?

1 个答案:

答案 0 :(得分:0)

您正在使用应该应用于项目的DataTemplate,但您根本不绑定相关属性。

<DataTemplate x:Key="DataTemplate">
    <Grid Width="Auto">
        <Label Content="{Binding Name}"
           HorizontalAlignment="Center" Margin="62,8,8,8" Width="100" VerticalAlignment="Center" Height="30"/>
        <Image Source="{Binding ImageUrl}"
           HorizontalAlignment="Left" Margin="8,8,0,8" Width="50" VerticalAlignment="Stretch" Height="30"/>
    </Grid>
</DataTemplate>

看到那两个绑定?您的数据对象需要提供这些公共属性,我将其命名为NameImageUrl

// Data-object class example
public class Contact
{
    public string Name { get; set; }
    public string ImageUrl { get; set; }
    //...
}

如果您的数据对象支持您只需将该类型的项添加到ListView,它应该按您的要求显示。

这可能对您没有多大意义,如果是这样,请务必首先阅读介绍性材料

Data Binding Overview
Data Templating Overview