viewmodel көру үшін сілтеме

Мен Xaml-ді менің көзқарасыммен байланыстыра алмаймын. Менің көзқарасымдаModel a recepie туралы деректерді сақтайтын INotifyPropertyChanged сыныптың ObservableCollection. Міне, менің Реджепи класы:

namespace WP7SQLiteClient.Model
{
    public class MainViewModelItem : INotifyPropertyChanged
    {
        string _title, _subTitle, _imageUriPath;

        string title
        {

            get
            {
                return _title;
            }
            set
            {
                _title = value;
                NotifyPropertyChanged("title");
            }
        }
        string subTitle
        {
            get
            {
                return _subTitle;
            }
            set
            {
                _subTitle = value;
                NotifyPropertyChanged("subTitle");
            }
        }
        string imageUriPath
        {
            get
            {
                return _imageUriPath;
            }
            set
            {
                _imageUriPath = value;
                NotifyPropertyChanged("imageUriPath");
            }
        }

        public MainViewModelItem(string title, string subtitle, string imageuripath)
        {
            this.title = title;
            this.subTitle = subtitle;
            this.imageUriPath = imageuripath;
        }

        public event PropertyChangedEventHandler PropertyChanged;

        protected void NotifyPropertyChanged(String info)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(info));
            }
        }
    }
}

Алынғандар тізімі бар менің ViewModel:

namespace WP7SQLiteClient.ViewModel
{

        public class PanoramaViewModel : INotifyPropertyChanged
        {
            public ObservableCollection _recepiesList;


            public ObservableCollection recepiesList
            {
                get
                {
                    return _recepiesList;
                }

                set
                {
                    _recepiesList = value;
                    NotifyPropertyChanged("recepiesList");
                }
            }

            public PanoramaViewModel()
            {
                this.recepiesList = new ObservableCollection();

            }

            public bool IsDataLoaded
            {
                get;
                private set;
            }

            public void LoadData()
            {
                this.recepiesList.Add(new MainViewModelItem("Classics", "", ""));
                this.recepiesList.Add(new MainViewModelItem("Perfect Pasta", "", ""));
                this.recepiesList.Add(new MainViewModelItem("Favorites", "", ""));
                this.recepiesList.Add(new MainViewModelItem("Snacks & Antipasti", "", ""));
                this.recepiesList.Add(new MainViewModelItem("Desserts", "", ""));
                this.recepiesList.Add(new MainViewModelItem("3 minutes recipes", "", ""));

                this.IsDataLoaded = true;
            }


            private string _sampleProperty = "Sample Runtime Property Value";
            /// 
/// Sample ViewModel property; this property is used in the view to display its value using a Binding ///
 
            /// 
            public string SampleProperty
            {
                get
                {
                    return _sampleProperty;
                }
                set
                {
                    if (value != _sampleProperty)
                    {
                        _sampleProperty = value;
                        NotifyPropertyChanged("SampleProperty");
                    }
                }
            }




            public event PropertyChangedEventHandler PropertyChanged;

            protected void NotifyPropertyChanged(String info)
            {
                if (PropertyChanged != null)
                {
                    PropertyChanged(this, new PropertyChangedEventArgs(info));
                }
            }
        }

}

My MainPage.xaml (жобаның түпнұсқасында, viewModel ViewModel қалтасында орналасқан, ал Үлгі Үлгі қалтасында орналасқан) менде келесідей жариялаған тізімді тізбем бар:

 

                

Үлгі App.xaml бағдарламасында орналасқан және сенімді. Ол {Binding title} сияқты заттарды пайдаланады

MainPage.cs ішіндегі көрініс үлгісін келесіге қолдануға тырысамын:

public static PanoramaViewModel viewModel = null;

        public static PanoramaViewModel ViewModel
        {
            get
            {
               //Delay creation of the view model until necessary
                if (viewModel == null)
                    viewModel = new PanoramaViewModel();

                return viewModel;
            }
        } 
public MainPage()
        {

            InitializeComponent();

            ViewModel.LoadData();
            DataContext = ViewModel;

        }

Бірақ бұл жұмыс істемейді, және де отладчик қатені көтереді. Қарап шығу үлгісін xaml-мен қалай дұрыс байланыстыра аламын?

UPDATE my template looks like this :

 <!-- for recent recepies-->

            

                
                    

                    
                        

                            

                                    
                                

                            
                        
                    
                
                    
                    
                        
                    
                

            
        

UPDATE 2

Мен тізімді кодты өзгерттім:

             

Шаблондысыз, [project_name] тізімін аламын .Model.MainViewModelItem , сондықтан үлгімен мәселе бар деп ойлаймын. Мен не істеп жатырмын?

1

2 жауаптар

Сізге ListBox деректерін байланыстыру керек. Сонымен, бұл сізге жұмыс істеуі керек.


2
қосылды
жұмыс істемейді. Мен аламын: mscorlib.dll жүйесінде 'System.IO.FileNotFoundException' түріндегі бірінші мүмкіндік алып тастау System.Windows.Data қатесі: BindingExpression жолының қатесі: 'title' сипаты WP7SQLiteClient.Model-да табылмады. MainViewModelItem '' WP7SQLiteClient.Model.MainViewModelItem '(HashCode = 65782377
қосылды автор Alex, көзі
яғни subTitle жолы көрінбейді, себебі оны байланыстырмаймын, оны статикалық жол беремін
қосылды автор Alex, көзі
Сіз халықтың құқығына сенесіз, бірақ менде ештеңе жоқ
қосылды автор Alex, көзі
қате болмайды, бірақ тізімдегі элементтерді көрсетпейді .. шығаруда қате жоқ
қосылды автор Alex, көзі
Мен үлгіні кодым
қосылды автор Alex, көзі
Мен UPDATE2 қосып көрдім
қосылды автор Alex, көзі
Мәселе үлгі болды, tnx!
қосылды автор Alex, көзі
Көру модемінің сипаттары жалпыға ортақ емес болғандықтан! Оларды ашық етіңіз және бақытты болыңыз :)
қосылды автор Sergei B., көзі
сол қате? немесе көрсетпеу керек пе?
қосылды автор Sergei B., көзі
Snoop алыңыз және ListBoxItem ListBox-да көрсетілгенін тексеріңіз. Сондай-ақ, үлгіні көрсетіңіз және жалпы сипаттармен код үзінділерін жаңартыңыз. Өйткені сізде шығарылымда міндетті қателіктер болмаса, мәселе туралы айту қиын.
қосылды автор Sergei B., көзі

Біз MEF-ды жобада пайдаланамыз және View.xaml.cs ішіндегі келесі кодпен көрініс үлгілерін байланыстырамыз:

[Import]
public ConnectionStringSetupViewModel ViewModel
{
    get { return DataContext as ConnectionStringSetupViewModel; }
    set { DataContext = value; }
}

Бұл каталогтар жасалған кезде импортқа қанағаттандыруға мүмкіндік береді. Егер сіз MEF-ды пайдаланбасаңыз, жоғарыда көрсетілген кодты импортсыз қолдануға болады, бірақ сіздің көрінісіңіз жасалса, сізге оның жаңа моделі үлгісін тағайындау керек.

0
қосылды
Менің жаңа модем үлгісін қалай бере аламын? Мен нені білдіретініне сенімді емеспін
қосылды автор Alex, көзі
Мен UPDATE2 қосып көрдім
қосылды автор Alex, көзі
PanaromaView p = жаңа PanaromaView (); p.ViewModel = жаңа PanaromaViewModel ();
қосылды автор Dirk Dastardly, көзі
Дәл сол сіз тағайындалған шаблонсыз сіз аласыз. Сізге ItemsSource және ItemsTemplate екеуін біріктіргеннен кейін сізге қажет жерде болатынын ойлаймын.
қосылды автор Dirk Dastardly, көзі