2016-08-10 41 views
6

Większość z Q & A, którą znalazłem na StackOverflow, to sposób łączenia, ale x:Bind, który zwykle nie jest rozwiązywany przez Bindings.Update(). Jednak moim problemem jest wewnątrz GridView, ItemSource="{x:Bind _myList}" działa, ale nie ma ItemSource="{Binding _myList}".x: Bind działa, ale bindowanie nie działa (w przeciwieństwie do większości znalezionych pytań i odpowiedzi)

Dlaczego? I jak sprawić, by Binding działał? (Zamiast x:Bind)

Oto kilka thingies kod:

Klasa:

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

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

Code Behind

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

XAML (tu nie pracuje, ale działa, jeśli ItemSource: Zmieniono w x:Bind _myList)

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

Odpowiedz

4

Problem związany z twoim _myList jest polem, a nie właściwością. Tak więc, zmień na

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

Dziękuję bardzo. To zadziałało. I nigdy nie spodziewałem się, że prośba o StackOverflow jest tak łatwa. Jestem początkującym programistą i nie rozumiem różnicy między polem a własnością i dlaczego x: Bind działa na polu, a Binding nie, ale jestem na dobrej drodze, aby dowiedzieć się więcej. –