C# 自定义ListViewItem

C# 自定义ListViewItem,c#,visual-studio,listviewitem,C#,Visual Studio,Listviewitem,我必须自定义.NETListView控件。 ListViewItem必须具有以下结构: 有没有什么好的教程可以帮助我进行定制 我使用的是Visual Studio 2008,C#。基于普通listviewitem创建自己的listviewitem并绘制自己的图形基于普通listviewitem创建自己的listviewitem并绘制自己的图形Scott Guthrie提供了一些关于listview控件的优秀教程 Scott Guthrie提供了一些关于listview控件的优秀教程 在WPF中

我必须自定义.NET
ListView
控件。
ListViewItem
必须具有以下结构:

有没有什么好的教程可以帮助我进行定制


我使用的是Visual Studio 2008,C#。

基于普通listviewitem创建自己的listviewitem并绘制自己的图形

基于普通listviewitem创建自己的listviewitem并绘制自己的图形

Scott Guthrie提供了一些关于listview控件的优秀教程


Scott Guthrie提供了一些关于listview控件的优秀教程


在WPF中,您可以使用ListViewItem来描述ListViewItem的外观,甚至可以使用DataTemplate。这里是一个非常简单的开始,你上面的问题,然后看看你是否可以发挥它,以你的需要

<ListView ItemsSource="{Binding ViewModelList}" >
          <ListViewItem>
            <Grid>
                   <Grid.RowDefinitions>
                         <RowDefinition />
                         <RowDefinition />
                   </Grid.RowDefinitions>
                   <Grid.ColumnDefinitions>
                         <ColumnDefinition />
                         <ColumnDefinition />
                         <ColumnDefinition />
                         <ColumnDefinition />
                   </Grid.ColumnDefinitions>
                   <Image Source="{Binding ImageInViewModel}" 
                          Grid.Column="0" Grid.Row="0" Grid.RowSpan="2"/>
                   <TextBlock Text="{Binding ItemText}" Name="Item Text" 
                              Grid.Row="0" Grid.Column="1" />
                   <TextBlock Name="SubItem1" Text="{Binding SubItem1}"
                              Grid.Row="0" Grid.Column="2" />
                   <TextBlock Name="SubItem2" Text="{Binding SubItem2}"
                              Grid.Row="0" Grid.Column="3" />
                   <Read Comment! Grid.Row="1" Grid.Column="1" Grid.ColSpan="3" />
            </Grid>
          </ListViewItem>
</ListView>

阅读评论:不要将此特定部分视为ListBoxItem,可以有两种方法

  • 您处于当前ListViewItem绑定的上下文中,因此可以根据需要描述下一个块

  • <ListView ItemsSource="{Binding ViewModelList}" >
              <ListViewItem>
                <Grid>
                       <Grid.RowDefinitions>
                             <RowDefinition />
                             <RowDefinition />
                       </Grid.RowDefinitions>
                       <Grid.ColumnDefinitions>
                             <ColumnDefinition />
                             <ColumnDefinition />
                             <ColumnDefinition />
                             <ColumnDefinition />
                       </Grid.ColumnDefinitions>
                       <Image Source="{Binding ImageInViewModel}" 
                              Grid.Column="0" Grid.Row="0" Grid.RowSpan="2"/>
                       <TextBlock Text="{Binding ItemText}" Name="Item Text" 
                                  Grid.Row="0" Grid.Column="1" />
                       <TextBlock Name="SubItem1" Text="{Binding SubItem1}"
                                  Grid.Row="0" Grid.Column="2" />
                       <TextBlock Name="SubItem2" Text="{Binding SubItem2}"
                                  Grid.Row="0" Grid.Column="3" />
                       <Read Comment! Grid.Row="1" Grid.Column="1" Grid.ColSpan="3" />
                </Grid>
              </ListViewItem>
    </ListView>
    
  • 您可以使用“中间人”视图模型,该视图模型包含对另一个视图模型的引用,该视图模型描述了“多行子项3”中的内容。这将允许您在这两种类型上使用DataTemplate,并将每种类型的显示分开。这个解决方案一开始很复杂,但看起来更符合您的问题


  • 在WPF中,您可以使用ListViewItem来描述ListViewItem的外观,甚至可以使用DataTemplate。这里是一个非常简单的开始,你上面的问题,然后看看你是否可以发挥它,以你的需要

    <ListView ItemsSource="{Binding ViewModelList}" >
              <ListViewItem>
                <Grid>
                       <Grid.RowDefinitions>
                             <RowDefinition />
                             <RowDefinition />
                       </Grid.RowDefinitions>
                       <Grid.ColumnDefinitions>
                             <ColumnDefinition />
                             <ColumnDefinition />
                             <ColumnDefinition />
                             <ColumnDefinition />
                       </Grid.ColumnDefinitions>
                       <Image Source="{Binding ImageInViewModel}" 
                              Grid.Column="0" Grid.Row="0" Grid.RowSpan="2"/>
                       <TextBlock Text="{Binding ItemText}" Name="Item Text" 
                                  Grid.Row="0" Grid.Column="1" />
                       <TextBlock Name="SubItem1" Text="{Binding SubItem1}"
                                  Grid.Row="0" Grid.Column="2" />
                       <TextBlock Name="SubItem2" Text="{Binding SubItem2}"
                                  Grid.Row="0" Grid.Column="3" />
                       <Read Comment! Grid.Row="1" Grid.Column="1" Grid.ColSpan="3" />
                </Grid>
              </ListViewItem>
    </ListView>
    
    
    
    阅读评论:不要将此特定部分视为ListBoxItem,可以有两种方法

  • 您处于当前ListViewItem绑定的上下文中,因此可以根据需要描述下一个块

  • <ListView ItemsSource="{Binding ViewModelList}" >
              <ListViewItem>
                <Grid>
                       <Grid.RowDefinitions>
                             <RowDefinition />
                             <RowDefinition />
                       </Grid.RowDefinitions>
                       <Grid.ColumnDefinitions>
                             <ColumnDefinition />
                             <ColumnDefinition />
                             <ColumnDefinition />
                             <ColumnDefinition />
                       </Grid.ColumnDefinitions>
                       <Image Source="{Binding ImageInViewModel}" 
                              Grid.Column="0" Grid.Row="0" Grid.RowSpan="2"/>
                       <TextBlock Text="{Binding ItemText}" Name="Item Text" 
                                  Grid.Row="0" Grid.Column="1" />
                       <TextBlock Name="SubItem1" Text="{Binding SubItem1}"
                                  Grid.Row="0" Grid.Column="2" />
                       <TextBlock Name="SubItem2" Text="{Binding SubItem2}"
                                  Grid.Row="0" Grid.Column="3" />
                       <Read Comment! Grid.Row="1" Grid.Column="1" Grid.ColSpan="3" />
                </Grid>
              </ListViewItem>
    </ListView>
    
  • 您可以使用“中间人”视图模型,该视图模型包含对另一个视图模型的引用,该视图模型描述了“多行子项3”中的内容。这将允许您在这两种类型上使用DataTemplate,并将每种类型的显示分开。这个解决方案一开始很复杂,但看起来更符合您的问题


  • 这是在Windows窗体还是WPF中?这是在Windows窗体还是WPF中?可爱,但这不是asp.net:)可爱,但这不是asp.net:)