2016-11-14 13 views
-1

私は質問を編集しました。以下のコメントありがとうございます。XAMLでObservableCollectionを使用する無パラメータコンストラクタ

私の問題は、XAMLでクラスを宣言するパラメータのないコンストラクタがあったようです。しかし、私は観測可能なコレクションを持つパラメータのないコンストラクタを取得する方法を理解できないようです。以下のコードをご覧ください:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Xml.Serialization; 
using System.ComponentModel; 
using System.Collections.ObjectModel; 

namespace LinkKing.Classes 
{ 
    [Serializable()] 
    public class TheLinks 
    { 
     public string linkID; 
     public string parentID; 
     public string link; 
     public DateTime dateAdded; 
     public int stepAdded; 
     public string img; 

     [System.Xml.Serialization.XmlElement("Link")] 
     public string Link 
     { 
      get { return link; } 
      set { link = value; } 
     } 

     [System.Xml.Serialization.XmlElement("DateAdded")] 
     public DateTime DateAdded 
     { 
      get { return dateAdded; } 
      set { dateAdded = value; } 
     } 

     [System.Xml.Serialization.XmlElement("StepAdded")] 
     public int StepAdded 
     { 
      get { return stepAdded; } 
      set { stepAdded = value; } 
     } 

     [System.Xml.Serialization.XmlElement("LinkID")] 
     public string LinkID 
     { 
      get { return linkID; } 
      set { linkID = value; } 
     } 

     [System.Xml.Serialization.XmlElement("ParentID")] 
     public string ParentID 
     { 
      get { return parentID; } 
      set { parentID = value; } 
     } 

     [System.Xml.Serialization.XmlElement("IMG")] 
     public string IMG 
     { 
      get { return img; } 
      set { img = value; } 
     } 

     public TheLinks(string linkID, string parentID, string link, DateTime dateAdded, int stepAdded, string img) : base() 
     { 
      this.Link = link; 
      this.DateAdded = dateAdded; 
      this.StepAdded = stepAdded; 
      this.LinkID = linkID; 
      this.ParentID = parentID; 
      this.IMG = img; 
     } 
    } 

    public class MyLinks : ObservableCollection<TheLinks> 
    { 
     public MyLinks() : base() 
     { 

     } 
    } 

} 

エラーはThe Type does not include any accessible constructorsです。

皆様のご協力に感謝いたします。

+1

私の推測では、あなたのLinkクラスに明示的な可視性修飾子がないので、それはプライベート宣言されているため、Xamlで見ることはできません。それを公共として宣言してみてください。 –

+0

応答Karelのおかげで、しかし私は 'MyLinks'を公に宣言しようとしましたが、うまくいきません。 – Cnote

+0

publicと宣言してコンパイルしましたか?また、あなたのクラスを見ると、パラメータのないコンストラクタが定義されていないことがわかります。パブリックパラメータなしコンストラクタなしでは、XAML内のオブジェクトをインスタンス化することはできません。 http://stackoverflow.com/questions/14347181/how-to-fix-xaml2009-language-construct-is-not-allowed-here –

答えて

1

コードに基づいて、MyLinksのパブリックなパラメータのないコンストラクタはありません。あなたがした場合はにそれを見つけるだろう。

また、通常MVVMの場合は、ViewModelの別の名前空間を使用する方が良いと思います。

とにかくクラス外からアクセスしないため、フィールド(つまりpublic string linkID;public string parentID;までpublic string img;まで)を非公開にすることもできます。

+0

Tyress、ご回答いただきありがとうございます。私は問題をパラメータのないコンストラクタに絞り込んだ。私はクラスを修正しましたが、今ではローカルで見つけることができますが、 "タイプにアクセス可能なコンストラクタは含まれていません"というエラーが表示されます。 – Cnote

+0

@Cnoteあなたのコードは今どのように見えますか?解決策を右クリックして再構築して問題が解決するかどうか確認できますか? – Tyress

+0

こんにちはTyres、私は私の質問を更新しました。私は助けに感謝します。私は、私の観測可能なコレクションでパラメータのないコンストラクタを正しく宣言していないようです。 – Cnote

関連する問題