1

如何将Artists集合中的所有艺术家绑定到 aListBoxPanoramaItem
我的xml如下:

<controls:PanoramaItem Header="Artist" Name="Pan3">
    <!--Double line list with image placeholder and text wrapping-->
    <ListBox Name="artistLb" Margin="0,0,-12,0" ItemsSource="{Binding Items}">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal" Margin="0,0,0,17">
                    <!--Replace rectangle with image-->
                    <Rectangle Height="100" Width="100" Fill="#FFE5001b" Margin="12,0,9,0"/>
                    <StackPanel Width="311">
                        <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                        <TextBlock Text="{Binding LineTwo}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                    </StackPanel>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>
</controls:PanoramaItem>

和 xaml.cs 代码:

private void PhoneApplicationPage_Loaded(object sender, RoutedEventArgs e)
{
    MediaLibrary library = new MediaLibrary();
    int CountArtist = library.Artists.Count;

    //binding the library.Artist to the Panorama item
}

谢谢!

4

2 回答 2

1

在我的回答中,我假设您从 Windows Phone 全景项目开始,并且已经添加了对 Microsoft.Xna.Framework 的引用以访问媒体库。

将像 ListBox 这样的 Ui 对象绑定到代码背后的最佳解决方案是坚持项目中已经提供的 ViewModel 方法。在您的项目中,您应该找到一个 MainViewModel。向此视图模型添加以下属性:

    private MediaLibrary _library;
    public MediaLibrary Library
    {
        get
        {
            if (_library == null)
            {
                _library = new MediaLibrary();
            }
            return _library;
        }
    }

此属性将 MediaLibrary 公开给您的 xaml。该库在第一次调用时被实例化。

现在可以从您的 xaml 绑定到此属性,我只显示 ListBox。

            <ListBox Margin="0,0,-12,0" ItemsSource="{Binding Library.Artists}">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Margin="0,0,0,17" Width="432" Height="78">
                            <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>

                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
            </ListBox>

请注意,我将 ListBox 绑定到我们刚刚在视图模型中创建的 Library 属性的子属性 Artists。我编辑了 ItemTemplate 以仅显示一个绑定到艺术家名称的 TextBlock。

在您的模拟器上,您只会看到 1 位艺术家作为示例,要使用真实设备测试此解决方案,您必须使用 WPConnect 工具,此处对此进行了说明

我希望这能让你现在开始,如果还有任何问题,请告诉我。

于 2011-08-04T16:48:28.873 回答
0

你有没有尝试过?

artistLb.DataContext = library.Artists;
于 2011-08-04T16:35:56.287 回答