2016-09-08 10 views
1

私はXamarinアプリケーションリストでデータバインディングを使用しようとしています。 私は次のとおりです:https://developer.xamarin.com/guides/xamarin-forms/user-interface/listview/data-and-databinding/。 Visual Studioからこのエラーが返されます:CS0103 C# "ELementView"という名前は現在のコンテキストに存在しません。 xamlファイルの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コード:あなたの助け

+0

「ELementView」を参照しようとするどこかのコードがあります。私たちはそれを見ることができますか?文脈では? –

+0

XamlがApp4.Page1の場合、コードはApp4.Elementになります。 XAMLページのコードビハインドファイルは、同じクラス名を共有し、同じ基本タイプ(ContentPage)を継承する必要があります。通常、IDEで新しいXAMLページを作成すると、このすべてが実行されます。 – Jason

答えて

0

また、これを使用することができます

その後、あなたはこのようなListViewに結合性ItemsSource追加することができます:あなたはそれがプロパティを探しますPage1ためDataContextは(クラスの要素である)あなたのDataContextの要素と呼ばdefindedとして

<ListView ItemsSource="{Binding Elements}"> 

をそこにElementCollectionを取得し、を追加します。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" }); 
     } 
    } 



}; 

おかげだけListViewに名前を与えることによって、あなたはどこからでも参照できるという意味ではありません。 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;}を持っていることを確認してください;:

関連する問題