1

ArtistsコレクションのすべてのアーティストをにバインドするListBoxにはどうすればよいPanoramaItemですか?
私のxamlは次のとおりです。

<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 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>

ビューモデルで作成したライブラリプロパティのサブプロパティArtistsにListBoxをバインドしていることに注意してください。ItemTemplateを編集して、Artist名にバインドするTextBlockを1つだけ表示しました。

エミュレーターでは、例として1人のアーティストが表示されます。実際のデバイスでこのソリューションをテストするには、WPConnectツールを使用する必要があります。これについてはここで説明します。

これで今のところうまくいくことを願っています。質問が残っている場合はお知らせください。

于 2011-08-04T16:48:28.873 に答える
0

やってみました?

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