逐个处理集合

时间:2013-05-29 10:09:06

标签: wpf collections grid

我有一个名为MessagesCollection的集合。问题是,当我尝试使用此代码显示它时:

<ScrollViewer Grid.Row="2">
    <Grid Margin="10, 10,0,0">
            <Grid.RowDefinitions>
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
                <RowDefinition Height="Auto" />
            </Grid.RowDefinitions>
            <Grid Grid.Row="0">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="2*"/>
                    <ColumnDefinition Width="1*"/>
                </Grid.ColumnDefinitions>
            <Grid Grid.Column="0">
                <ListView x:Name="ListMessages" Foreground="White" ItemsSource="{Binding MessagesCollection}" IsHitTestVisible="False">
                    <ListView.Background>
                        <ImageBrush ImageSource="Public\Images\chat_green-textarea.png"/>
                    </ListView.Background>
                    <ListView.View>
                        <GridView ColumnHeaderContainerStyle="{DynamicResource MyHeaderStyle}">
                            <GridViewColumn Width="auto" DisplayMemberBinding="{Binding Message}" />
                        </GridView>
                    </ListView.View>
                </ListView>
            </Grid>
            <Grid Grid.Column="1">
            </Grid>
        </Grid>
            <Grid Grid.Row ="1">
                <Image Source="Public\Images\chat_green-textarea-tail.png" Height="20" Width="30" HorizontalAlignment="Left" Margin="8,-4,0,0"/>
            </Grid>

        <Grid Grid.Row ="2">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="auto" />
                <ColumnDefinition Width="auto" />
            </Grid.ColumnDefinitions>
            <Grid Grid.Column="0">
                <Label Foreground="white" FontSize="12">Sent by</Label>

            </Grid>
            <Grid Grid.Column="1">
                <ListView x:Name="ListMessages2" Foreground="Black" ItemsSource="{Binding MessagesCollection}" IsHitTestVisible="False" >
                    <ListView.View>
                        <GridView ColumnHeaderContainerStyle="{DynamicResource MyHeaderStyle}">
                            <GridViewColumn Width="auto" DisplayMemberBinding="{Binding Name}" />
                        </GridView>
                    </ListView.View>
                </ListView>
            </Grid>
        </Grid>
    </Grid>
</ScrollViewer>

显示如下。 enter image description here

我想要的是这样的:
消息
发送方

在集合中的每个数据中。我知道我展示它的方式就是问题。但我真的不知道怎么做。有任何想法吗?谢谢!

2 个答案:

答案 0 :(得分:0)

我认为你需要为ListView中的Item定义一个DataTemplate。你的方式不正确。您不必定义ListView两次。而是绑定它一次并根据您的需要设置DataTemplate的样式。下面给出了一个接近您可能开始的示例代码。使用您希望的任何内容设置DataTemplate的样式。

<ListView ItemsSource="{Binding MessagesCollection}">
    <ListView.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding Message}"/>
                <TextBlock Text="{Binding Name}"/>
            </StackPanel>           
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

答案 1 :(得分:0)

我不确定你为什么在这里使用GridView。具有适当数据模板的平面列表将为您提供帮助,

<ListView x:Name="ListMessages" Foreground="White" ItemsSource="{Binding MessagesCollection}" IsHitTestVisible="False">
        <ListView.ItemTemplate>
            <DataTemplate>
                <StackPanel>
                    <TextBlock Text="{Binding Message}"/>
                    <TextBlock Text="{Binding Name}"/>
                </StackPanel>
            </DataTemplate>
        </ListView.ItemTemplate>
    </ListView>