我有一个名为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>
显示如下。
我想要的是这样的:
消息
发送方
在集合中的每个数据中。我知道我展示它的方式就是问题。但我真的不知道怎么做。有任何想法吗?谢谢!
答案 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>