1

だから私は XML からファイルを読んでいますが、これは Debug-Output を使用してかなりうまく機能します。

while (reader.Read())
{
    if (reader.NodeType == XmlNodeType.Element && reader.Name == "Note")
    {
        Note n = new Note();

        reader.ReadToFollowing("NoteTitle");
        string s = reader.ReadElementContentAsString();
        n.NoteTitle = s;
        Debug.WriteLine("s " + s);
        Debug.WriteLine("n " + n.NoteTitle);
     }
}

私の問題はそれです

n.NoteTitle = s;

何もしないので、2 番目のデバッグでは "n " のみが出力され、それ以外は何も出力されませんが、最初のデバッグでは"s Notetitle1"正しく出力されます。

私の問題は何ですか?

編集: 申し訳ありませんが、NoteTitle の実装:

private string _noteTitle = string.Empty;
    public string NoteTitle
    {
        get { return this._noteTitle; }
        set { RaisePropertyChanged("NoteTitle"); }
    }
4

2 に答える 2

3

Looking at your implementation of the NoteTitle setter, you are forgetting to set the value of the private field i.e.

private string _noteTitle = string.Empty; 

public string NoteTitle 
{ 
    get { return this._noteTitle; } 
    set 
    { 
        this._noteTitle = value; // set the field value
        RaisePropertyChanged("NoteTitle"); 
    } 
}

This would explain why no value is being retained when you set the NoteTitle property.

于 2013-01-08T15:27:25.370 に答える
2

OPの連載は人を狂わせているようです。問題は次のように表現する方が適切だと思います。

    Note n = new Note();
    string s = "TEST";
    n.NoteTitle = s;
    Debug.WriteLine("s " + s);
    Debug.WriteLine("n " + n.NoteTitle);

問題は次のようになります: 2 番目の WriteLine() が「n TEST」ではなく「n」を表示するのはなぜですか?

答えは、Note.NoteTitle のセッターまたはゲッターの実装に何か独特なものがあるということです。たとえば、この実装には次のような効果があります。

public string NoteTitle
{
    get
    {
        return "";
    }

    set
    {
        // Do nothing.
    }
}
于 2013-01-08T15:20:00.077 に答える