0

(MVVM と DataBinding を使用せずに) 作成した WPF を、これらの素晴らしい機能を使用する WPF に変更しようとしています。

すべての get と set 、さらには ID 属性や Full Name 属性などの NotifyProtertyChanged 属性を含む複数のプロパティ (ここにリストするには長すぎる) を持つ Person モデルをセットアップしました。

ここで、(ボタンをクリックしてコードを起動し、コードを作成しているときにいつ開始するかを確認する)、WPF アプリケーションで値のリストを調べ、それをオンラインの XML ドキュメントと比較して取得したいと考えています。検索された値に一致するリスト内の各人物のデータのリスト。もちろん、モデルのプロパティの一部を設定します。

例: - "Lewitt" を探しています - XML ドキュメントには姓が Lewitt の 4 人が含まれているため、それらの 4 人をリストに追加し (前に設定した Person モデル クラスとして設定されたアイテムを含む)、次の値を設定します。各アイテムの ID と FullName (例では短縮されています)。

これは、特定の値 (searchstring と呼ばれる) を検索するときにこれまでに実装した情報プロバイダー クラスです。

    public List<Person> GetPeople(string searchstring)
    {
        string url = string.Format("{0}{1}", BaseURL, HttpUtility.HtmlEncode(searchstring));
        XDocument doc = XDocument.Load(url);

        var names = (from s in doc.Root.Elements("Persons").Where(s => s.Element("Lastname").Value.Equals(searchstring, StringComparison.InvariantCultureIgnoreCase))
                     select new Person
                     {
                         ID = Convert.ToInt32(s.Element("id").Value),
                         fullName = s.Element("Firstname").Value + " " + s.Element("Lastname").Value
                     }).OrderBy(n => n.fullName).ToList();
        return people;
    }

ボタンをクリックして、アイテムのリストに対してこのプロセスを開始しようとします (これもテスト目的のみです)。「Jane Doe」の値の例を設定しました。 InformationProvider クラス:

            List<Person> persons= new List<Person>();
            persons= informationProvider.GetPeople(searchShowName);

私の問題は、コードを起動してテストのためにボタンをクリックすると、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーがスローされることです。そして私の行を強調表示します

        persons= informationProvider.GetPeople(searchShowName);

どうすればこれを修正できますか?

4

2 に答える 2

1

GetPeople を静的にする必要があります。

class InformationProvider
{
    public static List<Person> GetPeople(string searchstring)
    {
        //...
    }
}

または、informationProvider クラスのインスタンスを作成します。

InformationProvider informationProvider = new InformationProvider();
List<Person> persons = informationProvider.GetPeople(searchShowName);

大文字と小文字をどのように変更したか、冗長な空のリストを作成しなかったことに注意してください。

于 2013-08-27T12:12:08.910 に答える