1
salamanderMH 2019-10-03 19:35:22 +08:00 via Android
你不是应该添加多个 ListViewItem 吗?
|
2
pinews OP @salamanderMH 那就是多个 ListViewItem:{Tommy},不对。
|
3
mumbler 2019-10-03 19:39:18 +08:00 via Android
item.SubItems[0].Text = "Tommy";
这句不要即可,字段值全部 add 方式添加 |
5
mumbler 2019-10-03 20:08:26 +08:00 via Android
listView1 创建了几个字段?
|
7
pinews OP |
8
pinews OP |
9
skywalker0507 2019-10-03 22:01:38 +08:00
ListViewItem item = new ListViewItem
{ Content = new StackPanel { Orientation = Orientation.Horizontal, Children = { new TextBox { Text = "Tommy" }, new TextBox { Text = "123" }, } } }; ListView1.Items.Add(item); 这样试试? |
10
pinews OP @skywalker0507 报了很多错。。。
我有个疑问 ListViewItem 这个办法真的有用吗? |
11
ragnaroks 2019-10-04 01:06:56 +08:00
ListView 的 content 是 List<Control>,ListViewItem 是 Control 的可选项之一,换句话说,
ListView listview1=new ListView(); ListViewItem[] items=new ListViewItem[4]; items[0]=new ListViewItem(); items[1]=new ListViewItem(); items[2]=new ListViewItem(); items[3]=new ListViewItem(); listview1.ItemSource=items; 什么 Add/Append/Insert 之类都是 form 时代的遗毒,你既然已经用 WPF 了就不要考虑这些了 |
12
pinews OP @ragnaroks 我昨天搜索了 github,发现能用的的确是个 windows 应用程序(意思是不是 wpf 了),意思是 wpf 用不了了?
itemSource 出错了 错误 CS1061 “object”未包含“ItemSource”的定义,并且找不到可接受第一个“object”类型参数的扩展方法“ItemSource”(是否缺少 using 指令或程序集引用?) 不好意思我是个小白 |
13
pinews OP 我新建了一个 windows 窗体应用,这个方法可以用,wpf 我再研究研究,谢谢大家。
|
14
mingl0280 2019-10-05 02:08:44 +08:00
因为你用错了
|
15
mingl0280 2019-10-05 02:14:25 +08:00
@pinews
WPF 的 ListView 是这么用的(注意看 Image 和 TextBlock 的绑定): https://gist.github.com/mingl0280/7e24ff52eb7af5ad8b127fee45288592 |
17
forgottencoast 2019-10-05 22:14:43 +08:00
买本书来看看呀,基本上不会手工添加数据的,都是用绑定来解决。
|
18
shinytea2017 2019-10-05 22:30:51 +08:00
@pinews , gist 如果不上 vpn 是直接访问不了的;
/// MainWindow.xaml: /// 注意 Image 的 Source 和 TextBlock 的 Text 属性 <ListView x:Name="MaterialListView" Margin="565,28,0,24" SelectionMode="Single" AlternationCount="-1" ScrollViewer.CanContentScroll="True" ItemsSource="{Binding}" PreviewMouseDown="MaterialListView_PreviewMouseDown" PreviewMouseDoubleClick="MaterialListView_PreviewMouseDoubleClick"> <ListView.ItemsPanel> <ItemsPanelTemplate> <WrapPanel/> </ItemsPanelTemplate> </ListView.ItemsPanel> <ListView.ItemTemplate> <DataTemplate> <Grid Height="100" > <Grid.RowDefinitions> <RowDefinition Height="50"/> <RowDefinition Height="25"/> <RowDefinition Height="25"/> </Grid.RowDefinitions> <Image Source="{Binding MaterialUrl}"/> <TextBlock Text="{Binding MaterialName}" Grid.Row="1" TextAlignment="Center"/> <TextBlock Text="{Binding MaterialCount}" Grid.Row="2" TextAlignment="Center"/> </Grid> </DataTemplate> </ListView.ItemTemplate> <ListView.ItemContainerStyle> <Style TargetType="{x:Type ListViewItem}"> <EventSetter Event="MouseEnter" Handler="ListViewItem_MouseEnter"/> <EventSetter Event="MouseLeave" Handler="ListViewItem_MouseLeave"/> </Style> </ListView.ItemContainerStyle> </ListView> /// Material.cs 这个是独立的一个类 public class Material { public string MaterialUrl { get; set; } public string MaterialName { get; set; } public string MaterialCount { get; set; } public string MaterialID { get; set; } public Material() { MaterialUrl = ""; MaterialName = ""; MaterialCount = ""; } public Material(int id, string url, string name, int count) { MaterialID = id.ToString(); MaterialUrl = url; MaterialName = name; MaterialCount = "x" + count.ToString(); if (count <= 0) { MaterialCount = ""; } } } ///添加物品代码(MainWindow.xaml.cs) List<Material> mList = new List<Material>(); ///...数据提取, dt 是 dataTable for (int i = 0; i < dt.Rows.Count; i++) { if (rid != Convert.ToInt32(dt.Rows[i][0])) { mList.Add(new Material(-1, "", "或", -1)); rid = Convert.ToInt32(dt.Rows[i][0]); } mList.Add(new Material(Convert.ToInt32(dt.Rows[i][4]), dt.Rows[i][3].ToString(), dt.Rows[i][2].ToString(), Convert.ToInt32(dt.Rows[i][1]))); } MaterialListView.ItemsSource = mList; |
19
pinews OP @forgottencoast
@shinytea2017 谢谢,我的意思是 ListViewItem 这个写法只能 form 用,wpf 不能这样用对不对?我现在不确定的是这个,wpf 我也看到了代码,之前不知道 form 和 wpf 的区别。 |
20
forgottencoast 2019-10-15 17:25:24 +08:00
@pinews WPF 的 ListViewItem 是没有 SubItems 的,你用的 System.Windows.Forms 命名空间是 WinForm 的,WPF 的在 System.Windows.Controls 命名空间下。
类似的写法 WPF 也是有的,使用 Items 属性,或者 ItemsSource 属性。 你可以参考: https://docs.microsoft.com/en-us/dotnet/api/system.windows.controls.itemscontrol.items?view=netframework-4.8 |
21
mingl0280 2019-10-18 01:29:27 +08:00
|