2016-09-20 57 views
0

我是Windows手机编程的初学者。Windows Phone 8中的多级数据绑定

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

这是我的场景。

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类的Name绑定到我的文本块中。看看我已经做了什么在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> 

回答

1

从你的代码,我看到,颜色是一个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> 
+0

感谢您的及时回复。我试过这个,但每次都会给我这个列表的第一个元素的数据。我怎样才能使它动态.. 像假设我有2个项目在列表中呢? –

+0

这将取决于您尝试实施的逻辑。你如何决定你想绑定哪个ColorDemo对象? – Ferdin

+0

我想要按照升序来绑定所有的colordemo对象。就好像有两种颜色红色和绿色,那么我会将它绑定为1.红色和2.绿色。 –