2016-09-08 7 views
1

Xamarin 응용 프로그램 목록에서 데이터 바인딩을 사용하려고합니다. 다음과 같습니다 : https://developer.xamarin.com/guides/xamarin-forms/user-interface/listview/data-and-databinding/. Visual Studio에서 다음과 같은 오류 메시지가 표시됩니다. CS0103 C# "ELementView"이름이 현재 컨텍스트에 없습니다. xaml fil : xaml fil에있는 xmlns : local에 관한 문제라고 생각하지만 잘 모르겠습니다.현재 컨텍스트 및 데이터 바인딩

XAML 코드 :

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      xmlns:local="clr-namespace:App4;assembly=listeElements" 
      x:Class="App4.Page1" 
      Title="ListView Demo Page"> 

    <ListView x:Name="ELementView"> 
     <ListView.ItemTemplate> 
      <DataTemplate> 
       <TextCell Text="{Binding Name}" /> 
      </DataTemplate> 
     </ListView.ItemTemplate> 
    </ListView> 

</ContentPage> 

listeElements 코드 : 그냥 이름이 어디에서 참조 할 수 있습니다 의미하지 않는다 ListView를 제공함으로써 여러분의 도움이

+0

"ELementView"를 참조하려고하는 코드가 있습니다. 우리가 그걸 볼 수 있을까요? 문맥? –

+0

Xaml이 App4.Page1이면 코드가 App4.Element입니다. XAML 페이지의 코드 숨김 파일은 동일한 클래스 이름을 공유하고 동일한 기본 형식 (ContentPage)을 상속해야합니다. 일반적으로 IDE에서 새 XAML 페이지를 만들면이 모든 작업이 수행됩니다. – Jason

답변

0

당신은이를 사용할 수 있습니다 당신이 Page1DataContext을 definded 같은 속성이 당신의 DataContext의 요소라는 것이 (클래스 요소 인) 모양

<ListView ItemsSource="{Binding Elements}"> 

:

그런 다음 당신은 ItemsSource이처럼 ListView에 - 결합 추가 할 수 있습니다 - 거기에 ElementsCollection을 가져오고 을 귀하의 컴퓨터에 추가합니다. CellTemplate

+0

Thks. 그것은 작동합니다. – Matthaousse

0

에 대한

using System; 
using System.Collections; 
using System.Collections.Generic; 
using System.Collections.ObjectModel; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using Xamarin.Forms; 

namespace App4 
{ 
    public class Element 
    { 
     private string element; 

     public string Name 
     { 
      get { return element; } 
      set { element = value; } 
     } 

     ObservableCollection<Element> Elements = new ObservableCollection<Element>(); 
     public void ElementListPage() 
     { 
      ELementView.ItemsSource = Elements; 
      Elements.Add(new Element { Name = "oooo" }); 
     } 
    } 



}; 

감사합니다. Page1 XAML 페이지의 코드 숨김에서 ELementView을 참조 할 수 있습니다.

거기에 가려면 솔루션 창을 열고 Page1.xaml으로 이동하여 왼쪽의 화살표를 클릭하고 Page1.xaml.cs을 두 번 클릭하십시오. 아마 가장 좋은 방법 아니다,

using System.Collections.ObjectModel; 
using Xamarin.Forms; 

public Page1() 
{ 
    InitializeComponent(); 

    ObservableCollection<Element> Elements = new ObservableCollection<Element>(); 

    ELementView.ItemsSource = Elements; 
    Elements.Add(new Element { Name = "oooo" }); 
} 

이 작동 것이지만 :

이 페이지에서 당신이 뭔가를 할 수 있습니다. 좋은 MVVM을 사용하려고합니다! 그러나 당신은 한걸음 더 나아갈 수 있습니다.

MvvmCross 또는 FreshMvvm과 같은 MVVM 프레임 워크를 사용해보십시오. 나는 나중에 blogpost를했다. 당신은 그것을 here 찾을 수 있습니다. 새 버전이 나왔지만 기본으로 시작해야합니다.

public Page1() 
{ 
    InitializeComponent(); 
    Elemenet e = new Element(); 
    e.ElementListPage(); 
    this.BindingContext = e; 
} 

을하지만 ObservableCollection<Element>{get; set;}이 있는지 확인;

관련 문제