2016-08-10 19 views
6

Hầu hết các Q & A tôi tìm thấy trên StackOverflow là cách Binding làm việc nhưng x:Bind không thường được giải quyết bởi Bindings.Update(). Tuy nhiên, vấn đề của tôi là, bên trong một GridView, ItemSource="{x:Bind _myList}" hoạt động nhưng ItemSource="{Binding _myList}" thì không.x: Bind hoạt động nhưng Binding không (đối diện với hầu hết Q & A tìm thấy)

Tại sao? Và làm thế nào để làm cho Binding làm việc? (Thay vì x:Bind)

Dưới đây là một vài thingies mã:

Class:

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

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

Mã Đằng sau

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

XAML (không làm việc ở đây nhưng hoạt động nếu ItemSource: Thay đổi vào x:Bind _myList)

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

Trả lời

4

Sự cố mà _myList của bạn là trường, không phải thuộc tính. Vì vậy, hãy thay đổi thành

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

Cảm ơn bạn rất nhiều. Điều này làm việc. Và tôi không bao giờ mong đợi yêu cầu trên StackOverflow là dễ dàng như vậy. Tôi là một người mới bắt đầu vào lập trình và không hiểu sự khác biệt giữa trường và tài sản và tại sao x: Bind hoạt động trên một lĩnh vực và Binding không, nhưng tôi đang trên con đường của tôi nhìn lên để tìm hiểu thêm. –

Các vấn đề liên quan