Windows Phone 8中的多级数据绑定

时间:2016-09-20 05:39:38

标签: c# xaml windows-phone-8 data-binding

我是Windows手机编程的初学者。

我想使用该绑定属性将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类的名称绑定到我的文本块中。看看我在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 个答案:

答案 0 :(得分: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>