MVVM从文本文件中获取数据

时间:2017-05-05 10:10:33

标签: c# file mvvm

我无法获得如何在文本文件中搜索然后使用模型视图视图模型获取所需数据的逻辑。 基本上,我必须创建一个字典应用程序,我在文本文件中有单词,语言和描述。像:

  

cat; e英文;它是一种四腿动物

在模型中,我有一个文本框,客户端写一个单词和另外两个框,其中应显示单词的语言和描述。

我无法获得如何搜索此文件。我试图在网上搜索,但似乎没有任何东西符合我的确切问题。

1 个答案:

答案 0 :(得分:1)

除非您的文件要更改,否则您可以在运行应用程序时预先阅读整个文件,并将数据放入视图模型的模型列表中。

由于这本质上是一个CSV文件,假设每个条目都是一行,使用分号作为分隔符,我们可以使用.Net CSV解析器将文件处理到模型中:

基本型号:

public class DictionaryEntryModel {
    public string Word { get; set; }
    public string Language { get; set; }
    public string Description { get; set; }
}

带有构造函数的示例视图模型,用于填写模型:

public class DictionaryViewModel {

    // This will be a INotify based property in your VM
    public List<DictionaryEntryModel> DictionaryEntries { get; set; }

    public DictionaryViewModel () {
        DictionaryEntries = new List<DictionaryEntryModel>();

        // Create a parser with the [;] delimiter
        var textFieldParser = new TextFieldParser(new StringReader(File.ReadAllText(filePath)))
        {
            Delimiters = new string[] { ";" }
        };

        while (!textFieldParser.EndOfData)
        {
            var entry = textFieldParser.ReadFields();
            DictionaryEntries.Add(new DictionaryEntryModel()
                {
                    Word = entry[0],
                    Language = entry[1],
                    Description = entry[2]
                });
        }

        // Don't forget to close!
        textFieldParser.Close();
    }
}

您现在可以使用属性DictionaryEntries绑定视图,只要您的应用处于打开状态,它就会将您的完整文件保留为DictionaryEntryModel列表。

希望这有帮助!