0

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

替代文字 http://img257.imageshack.us/img257/1575/85834837.jpg

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

我正在使用 Visual Studio 2008,C#。

4

3 回答 3

3

Scott Guthrie 有一些很棒的教程,涵盖了列表视图控件

http://weblogs.asp.net/scottgu/archive/2007/08/10/the-asp-listview-control-part-1-building-a-product-listing-page-with-clean-css-ui。 aspx

于 2009-03-24T12:15:07.197 回答
2

在普通 Listviewitem 的基础上创建自己的 listviewitem 并进行自己的绘图

于 2009-03-24T12:05:22.243 回答
0

在 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。

  1. 您处于当前 ListViewItem 绑定的上下文中,因此您可以描述下一个块以满足您的需要。

  2. 您可以使用“中间人” ViewModel,其中包含对另一个 ViewModel 的引用,该 ViewModel 在“Multiline subitem 3”中描述您的内容。这将允许您在这两种类型上使用 DataTemplate 并将每种类型的显示分开。起初,此解决方案很复杂,但看起来更符合您的问题。

于 2010-02-07T14:52:55.533 回答