C# Listview 2列WPF

C# Listview 2列WPF,c#,wpf,C#,Wpf,另一个新手问题。我想打开一个文本文件并绑定到一个包含2列、ID和详细信息的listviewWPF。这是txt文件的副本。因此,ID将包含主机和操作系统名称等,详细信息将包含右侧的信息。这个列表要大得多,但你明白了。是的,我是c和WPF的新手。谢谢你的帮助 Host Name: MD1HXQTC OS Name: Microsoft Windows 7 Enterprise OS Version: 6

另一个新手问题。我想打开一个文本文件并绑定到一个包含2列、ID和详细信息的listviewWPF。这是txt文件的副本。因此,ID将包含主机和操作系统名称等,详细信息将包含右侧的信息。这个列表要大得多,但你明白了。是的,我是c和WPF的新手。谢谢你的帮助

Host Name:                 MD1HXQTC
OS Name:                   Microsoft Windows 7 Enterprise
OS Version:                6.1.7601 Service Pack 1 Build 7601
BIOS Version:              Hewlett-Packard M70 Ver. 01.08, 3/16/2015

ListView是ListBox的后代,它允许定义自定义视图而不是直接列表

获取包含列的列表的最简单方法是使用GridView作为ListView的视图

所以,如果你有这样一门课:

public class SomeClass
{
    public string FirstProperty { get; set; }
    public string SecondProperty { get; set; }
}

//Actually you will also need your setters to raise the PropertyChanged event but it's not in the scope of the question.
您可以按如下方式声明ListView:注意DisplayMemberBindings具有my属性的名称

<ListView>
    <ListView.View>
        <GridView>
            <GridViewColumn Header="First Property"
                            DisplayMemberBinding="{Binding FirstProperty}"/>
            <GridViewColumn Header="Second Property"
                            DisplayMemberBinding="{Binding SecondProperty}"/>
        </GridView>
    </ListView.View>
</ListView>

然后,您需要将SomeClass的集合设置为ListView的ItemsSource。

ListView是ListBox的后代,它允许定义自定义视图,而不是直接的列表

获取包含列的列表的最简单方法是使用GridView作为ListView的视图

所以,如果你有这样一门课:

public class SomeClass
{
    public string FirstProperty { get; set; }
    public string SecondProperty { get; set; }
}

//Actually you will also need your setters to raise the PropertyChanged event but it's not in the scope of the question.
您可以按如下方式声明ListView:注意DisplayMemberBindings具有my属性的名称

<ListView>
    <ListView.View>
        <GridView>
            <GridViewColumn Header="First Property"
                            DisplayMemberBinding="{Binding FirstProperty}"/>
            <GridViewColumn Header="Second Property"
                            DisplayMemberBinding="{Binding SecondProperty}"/>
        </GridView>
    </ListView.View>
</ListView>
然后,您需要将您的SomeClass集合作为ListView的ItemsSource。

创建了我的类

添加了可观察集合

将Itemsource绑定到集合

感谢巴格夫让我开始学习,感谢所有为我指明方向的人

创建了我的类

添加了可观察集合

将Itemsource绑定到集合


感谢巴格夫让我开始学习,感谢所有为我指明方向的人

你自己还没试过吗?有很多关于WPF ListView的文档和示例。所以我很乐意提供帮助,但为了做到这一点,您需要自己尝试一下。将其分解为几个部分,然后编写一些代码来完成每个步骤。在这一点上,如果你得到一个错误或什么,那么无论如何回来,并张贴一个问题。我已经尝试了一些事情,那又怎样?告诉我们你到底在哪里被卡住了。去谷歌并输入。。。如何用C将分隔的文本解析成某些东西,然后编写代码,如果代码不起作用,则发布代码并请求help@Metrics,请不要误会我。不想好斗。绿色是可以的,但在这里你需要做一些腿部工作,而不仅仅是要求写我的代码,你最好的努力将是把每个任务分解成简单的步骤。完成这一步如果需要,请寻求帮助,然后采取下一步。所以从解析数据开始,然后把数据转换成可以使用的东西等等。你自己还没有尝试过什么吗?有很多关于WPF ListView的文档和示例。所以我很乐意提供帮助,但为了做到这一点,您需要自己尝试一下。将其分解为几个部分,然后编写一些代码来完成每个步骤。在这一点上,如果你得到一个错误或什么,那么无论如何回来,并张贴一个问题。我已经尝试了一些事情,那又怎样?告诉我们你到底在哪里被卡住了。去谷歌并输入。。。如何用C将分隔的文本解析成某些东西,然后编写代码,如果代码不起作用,则发布代码并请求help@Metrics,请不要误会我。不想好斗。绿色是可以的,但在这里你需要做一些腿部工作,而不仅仅是要求写我的代码,你最好的努力将是把每个任务分解成简单的步骤。完成这一步如果需要,请寻求帮助,然后采取下一步。因此,从解析数据开始,然后将数据转换为可以使用的内容,等等。我一直在尝试使用:split on char将txt文件拆分为一个数组。不确定listview的数据结构应该是什么样子。不习惯OOP。已经进行了大约10年的程序化编程。只是一个提醒,我需要有人带我通过这个…不希望有人只是正确的代码,我正在学习,非常非常绿色…提前感谢。任何建议都会让我有足够的时间来处理和运行它。我一直在尝试使用:split on char将txt文件拆分成一个数组。不确定listview的数据结构应该是什么样子。不习惯OOP。已经进行了大约10年的程序化编程。只是一个提醒,我需要有人带我通过这个…不希望有人只是正确的代码,我正在学习,非常非常绿色…提前感谢。任何建议都会让我有足够的精力来工作和跑步。
Microsoft.Win32.OpenFileDialog openfiledialog = new Microsoft.Win32.OpenFileDialog();
        openfiledialog.FileName = ""; // Default file name
        openfiledialog.DefaultExt = ".txt"; // Default file extension
        openfiledialog.Filter = "txt files (.txt)|*.txt"; // Filter files by extension

        // Show open file dialog box



        bool? result = openfiledialog.ShowDialog();

        // Process open file dialog box results
        if (result == true)
        {

            var fileName = openfiledialog.FileName;

            StreamReader file = new StreamReader(fileName);

            string line = "";

            while ((line = file.ReadLine()) != null)
            {
                var splitLine = line.Split(':');


                if (splitLine.Count() > 1)
                {
                    gambitCollection.Add(new Gambit() { GetID = splitLine[0].Trim(), GetDetails = splitLine[1].Trim() });
                }
            }

        }
ListViewRPMInfo.ItemsSource = gambitCollection;