2017-05-10 5 views
0

私はXamarinが新しく、ViewModelをビューにバインドしようとしていますが、まだできませんでした。Xamarinフォームの名前空間宣言でエラーが発生しました

ここにコードがあります。

(モデル)

namespace CadastroProdutos 
{ 
    public class Produto 
    { 
     public string Codigo { get; set; } 
     public string Identificacao { get; set; } 
     public string Tipo { get; set; } 
    } 
} 

(観測可能なモデル)

namespace CadastroProdutos 
{ 
    public class ObservableProduto : INotifyPropertyChanged 
    { 
     Produto produto; 
     public ObservableProduto() 
     { 
     } 

     public event PropertyChangedEventHandler PropertyChanged; 

     public string Codigo 
     {    
      set 
      { 
       if (!value.Equals(produto.Codigo, StringComparison.Ordinal)) 
       { 
        produto.Codigo = value; 
        OnPropertyChanged("Codigo"); 
       } 
      } 
      get 
      { 
       return produto.Codigo; 
      } 
     } 

     public string Identificacao 
     { 
      set 
      { 
       if (!value.Equals(produto.Identificacao, StringComparison.Ordinal)) 
       { 
        produto.Identificacao = value; 
        OnPropertyChanged("Identificacao"); 
       } 
      } 
      get 
      { 
       return produto.Identificacao; 
      } 
     } 

     public string Tipo 
     { 
      set 
      { 
       if (!value.Equals(produto.Tipo, StringComparison.Ordinal)) 
       { 
        produto.Tipo = value; 
        OnPropertyChanged("Tipo"); 
       } 
      } 
      get 
      { 
       return produto.Tipo; 
      } 
     } 

     void OnPropertyChanged([CallerMemberName] string propertyName = null) 
     { 
      var handler = PropertyChanged; 
      if (handler == null) 
      { 
       handler(this, new PropertyChangedEventArgs(propertyName)); 
      } 
     } 
    } 
} 

(ViewModelに)

namespace CadastroProdutos 
{ 
    public class ListProdutoViewModel 
    { 
     ObservableCollection<ObservableProduto> produtos; 

     public ListProdutoViewModel() 
     { 
      produtos = new ObservableCollection<ObservableProduto>(); 
     } 

     public ObservableCollection<ObservableProduto> Produtos 
     { 
      set 
      { 
       if (value != produtos) 
       { 
        produtos = value; 
       } 
      } 
      get 
      { 
       return produtos; 
      } 
     } 
    } 
} 

(ビュー)

<?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:CadastroProdutos;assembly=CadastroProdutos" 
    x:Class="CadastroProdutos.ListProduto" 
    Title="Listagem de Produtos"> 
    <ContentPage.Content> 
     <ListView x:Name="listView" Margin="20,40,20,20" ItemsSource="{Binding Produtos}"> 
      <ListView.BindingContext> 
       <local:ListProdutoViewModel /> 
      </ListView.BindingContext> 
      <ListView.Header> 
       <StackLayout Orientation="Vertical" > 
         <Label Text="Produtos" HorizontalOptions="Center"/> 
       </StackLayout> 
      </ListView.Header> 
      <ListView.ItemTemplate> 
       <DataTemplate> 
        <StackLayout Orientation="Horizontal" > 
         <TextCell Text="{Binding Identificacao}"/> 
        </StackLayout> 
       </DataTemplate> 
      </ListView.ItemTemplate> 
     </ListView> 
    </ContentPage.Content> 
</ContentPage> 

エラーの取得 "Xamarin.Forms.Xaml.XamlParseException位置10:6。地元のタイプ:のxmlns CLR名前空間には見られないListProdutoViewModel:CadastroProdutos;アセンブリ= CadastroProdutos」 私は名前空間宣言に何をしないのです事前に

おかげ

+0

2つのもの。 1)XamlCompilationはオンになっていますか? 2)bin/objフォルダを削除しましたか? –

+0

この 'xmlns:local =" clr-namespace:CadastroProdutos; assembly = CadastroProdutos "がどのようにアセンブルされているかを見ると、最初の値がチェックアウトされているように見え、2番目の値がアセンブリであることがわかります。アセンブリ名が正しいと確信していますか? CadastroProdutosというDLLがありますか?両方の値が正しい場合は、実際にソリューション全体を再構築してクリーニングしてみてください –

答えて

1

かListProdutoViewModelは、名前空間の下にdeifinedされていることを確認してください。?。 。。。 - CadastroProdutosも

、ローカルであっアセンブリに言及する必要はありません:アセンブリは= CadastroProdutosは、したがって、上記のアセンブリコードを削除した後にアプリケーションを実行しようとして以下のように、

ローカル= "CLR -namespace:CadastroProdutos "

関連する問題