2016-11-14 3 views
-1

Я отредактировал вопрос. Спасибо за комментарии ниже.Параметрический конструктор с использованием ObservableCollection в XAML

Похоже, что моя проблема заключалась в конструкторе без параметров, чтобы объявить класс в 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

Спасибо за ответ Карел, однако я попытался объявить «MyLinks» публичным, и он не работает. – Cnote

+0

Вы скомпилировали его после объявления его публичным? Кроме того, глядя на ваш класс, я вижу, что у вас нет конструктора без параметров. Вы не сможете создавать экземпляр любого объекта в 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

Тюрьма, спасибо за ваш ответ. Я сузил проблему до конструктора без параметров. Я переработал класс, и теперь я могу найти его в локальном, но теперь я получаю сообщение об ошибке «тип не содержит доступных конструкторов». – Cnote

+0

@Cnote Как выглядит ваш код сейчас? Можете ли вы попробовать щелкнуть правой кнопкой мыши по решению и выполнить перестройку, чтобы узнать, устранит ли это проблему? – Tyress

+0

Hi Tyress, я обновил свой вопрос. Я ценю помощь. Кажется, я не декларирую свой конструктор без параметров с моей наблюдаемой коллекцией. – Cnote

Смежные вопросы