Windows Phone 中的多级数据绑定 8

Multi level data Binding in Windows Phone 8

我是 Windows phone 编程的初学者。

我想使用该绑定属性将数据从 API 绑定到我的 XAML 元素。请让我知道我们如何在其中绑定多级 classes 对象。

这是我的场景。

List<Sample> SearchResult = new List<Sample>()
{
    new Sample(){
         Name="ABC",                                  
         modelProperty = new SampleDetail(){ 
               articleNo="1", videoURL = "https://www.youtube.com/watch?v=abc",
               colors = new List<ColorsDemo>(){ 
                         new ColorsDemo { 
                               Name = "Red",
                               colorProperty= new ColorDemoProperty{ name = "ABC",article_no = "Art1",
                               image = new Uri("http://img.youtube.com/vi/e60E99tUdxs/default.jpg",UriKind.RelativeOrAbsolute) 
                               }
                         }
               }
         }
}

现在,我想将 ColorsDemo class 的名称绑定到我的文本块中。看看我为绑定 XAML 做了什么:

<TextBlock x:Name="PName" Grid.Row="0" Margin="100,0,0,0" Tap="ProductName_Tap" HorizontalAlignment="Center" VerticalAlignment="Center" Width="350" TextWrapping="Wrap" Foreground="Black" Text="{Binding Path=modelProperty.colors.Name}" FontSize="30"></TextBlock>

从您的代码中,我看到颜色是 ColorDemo 对象的列表。所以当你说 {Binding Path=modelProperty.colors.Name} 它不会告诉绑定到哪个列表项。正确的用法应该是{Binding Path=modelProperty.colors[0].Name}。这告诉控件绑定到第一个颜色项的名称(因为索引为 0)。

绑定所有颜色。您应该使用 Listview 并绑定其中的颜色。所以你应该可以做这样的事情。

<ListView ItemSource={Binding Path=modelProperty.colors}>
    <ListView.ItemTemplate>
        <TextBlock x:Name="PName" Grid.Row="0" Margin="100,0,0,0" Tap="ProductName_Tap" HorizontalAlignment="Center" VerticalAlignment="Center" Width="350" TextWrapping="Wrap" Foreground="Black" Text="{Binding Path=Name}" FontSize="30"></TextBlock>
    </ListView.ItemTemplate>
</ListView>