2016-08-10 7 views
6

Qのほとんどは&です。バインドの動作はどうですか?x:Bindは通常Bindings.Update()で解決しません。しかし、私の問題は、GridViewの中でItemSource="{x:Bind _myList}"が動作しますが、ItemSource="{Binding _myList}"はありません。x:バインドは動作しますがバインディングはありません(ほとんどのQ&Aとは逆です)

なぜですか?そしてバインディングはどのようにしたらいいですか? XAMLは、(ここでは動作しません

public MyList _myList = new MyList(); 
_myList.Populate(); 
DataContext = this; 
Bindings.Update(); 

の後ろ

public class MyClass 
{ 
    public string prop1 {get; set;} 
    public string prop2 {get; set;} 
} 

public class MyList : List<MyClass> 
{ 
    public void Populate() 
    // Add items 
} 

コードが、ItemSource場合に動作します:

クラス:

(代わりにx:Bindの)ここでは、いくつかのコード鮫だ変更x:Bind _myListに)

<GridView ItemSource="{Binding _myList}"> 
<GridView.ItemTemplate> 
    <DataTemplate> 
    <StackPanel> 
    <TextBlock Text="{Binding prop1}"/> <TextBlock Text="{Binding prop2}/> 
    </StackPanel> 
    </DataTemplate> 
</GridView.ItemTemplate> 
</GridView> 

答えて

4

_myListはフィールドであり、プロパティではないという問題です。ですので、

に変更
public MyList _myList { get; set; } = new MyList(); 
+0

ありがとうございました。これはうまくいった。そして、私はStackOverflowを尋ねることは決して簡単ではありません。私はプログラミングの初心者で、フィールドとプロパティの違いを理解していないし、なぜx:バインドはフィールドで動作し、バインドはしませんが、私はもっと学びたいと思っています。 –

関連する問題