ListView填充(使用C#)?
我想以编程方式填充WPF列表视图。 我想我已经接近答案了,但还没有解决,我使用了一种方法来填充列表视图,列表视图在XAML中是这样的ListView填充(使用C#)?,c#,wpf,xaml,visual-studio-2012,C#,Wpf,Xaml,Visual Studio 2012,我想以编程方式填充WPF列表视图。 我想我已经接近答案了,但还没有解决,我使用了一种方法来填充列表视图,列表视图在XAML中是这样的 <ListView Name="listview" HorizontalAlignment="Left" Height="252" Margin="39,110,0,0" VerticalAlignment="Top" Width="340"> <ListView.View> <GridView
<ListView Name="listview" HorizontalAlignment="Left" Height="252" Margin="39,110,0,0" VerticalAlignment="Top" Width="340">
<ListView.View>
<GridView x:Name="gridcontrol">
<GridViewColumn/>
</GridView>
</ListView.View>
</ListView>
一个更简单的解决方案是填充一个集合并将其数据绑定到该集合,而不是与ListViewItems混为一谈。诀窍是翻转侧面的items控件,使字符串集合显示为列而不是行 XAML:
代码隐藏:
using System;
using System.Collections.ObjectModel;
using System.Windows;
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Results = new ObservableCollection<Tuple<string, string[]>>();
FillListView("AAA", new string[] { "A1", "A2", "A3" });
FillListView("BBB", new string[] { "B1", "B2", "B3" });
DataContext = this;
}
public ObservableCollection<Tuple<string, string[]>> Results { get; private set; }
private void FillListView(string header, string[] text)
{
Results.Add(Tuple.Create(header, text));
}
}
}
使用系统;
使用System.Collections.ObjectModel;
使用System.Windows;
命名空间WpfApplication1
{
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
结果=新的可观察集合();
FillListView(“AAA”,新字符串[]{“A1”、“A2”、“A3”});
FillListView(“BBB”,新字符串[]{“B1”、“B2”、“B3”});
DataContext=this;
}
公共可观测收集结果{get;private set;}
私有void FillListView(字符串标题,字符串[]文本)
{
Add(Tuple.Create(header,text));
}
}
}
等等。。。你的问题是什么?我刚刚运行了你的代码,它似乎绑定了项。嗯,是的,但你知道我想要的是:col1:value1,value2,value3和col2:value1..value2当然这会上下波动,但我会得到每一列的每一个值?这适用于基于DB的应用程序,因此你可以根据两个组合框选择进行查询,你应该有一个列,列上每次按下按钮的结果-,我修改了我的答案。您只需设置DisplayMemberBinding
。当绑定到字符串而不是对象时进行测试有点奇怪,但这是可能的。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<ItemsControl ItemsSource="{Binding Path=Results}">
<ItemsControl.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding Path=Item1}" FontWeight="Bold" />
<ItemsControl ItemsSource="{Binding Path=Item2}" />
</StackPanel>
</DataTemplate>
</ItemsControl.ItemTemplate>
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<StackPanel Orientation="Horizontal" />
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
</ItemsControl>
</Window>
using System;
using System.Collections.ObjectModel;
using System.Windows;
namespace WpfApplication1
{
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
Results = new ObservableCollection<Tuple<string, string[]>>();
FillListView("AAA", new string[] { "A1", "A2", "A3" });
FillListView("BBB", new string[] { "B1", "B2", "B3" });
DataContext = this;
}
public ObservableCollection<Tuple<string, string[]>> Results { get; private set; }
private void FillListView(string header, string[] text)
{
Results.Add(Tuple.Create(header, text));
}
}
}