1

理解を助けてください。PanoramaPage.xaml私は2 つのビューを持っていますPanoramaItem。最初の項目はある Web サービスからのニュースのリストで、2 番目の項目はそのサービスのユーザーのリストです。ニュースとユーザーは違いModelsます。

意見:

<controls:PanoramaItem Header="users">
                <ListBox Margin="0,0,-12,0">
                    <ListBox.ItemTemplate>
                        <DataTemplate>
                            <StackPanel Orientation="Horizontal" Margin="0,0,0,17">                                                             
                                <StackPanel Width="311">                                    
                                    <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                                    <TextBlock Text="{Binding Aboutself}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                                </StackPanel>
                            </StackPanel>
                        </DataTemplate>
                    </ListBox.ItemTemplate>
                </ListBox>
            </controls:PanoramaItem>
        </controls:Panorama>

<controls:PanoramaItem Header="news">            
                    <ListBox Margin="0,0,-12,0">
                        <ListBox.ItemTemplate>
                            <DataTemplate>
                                <StackPanel Margin="0,0,0,17" Width="432" Height="78">
                                    <TextBlock Text="{Binding Title}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                                    <TextBlock Text="{Binding Content}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
                                </StackPanel>
                            </DataTemplate>
                        </ListBox.ItemTemplate>
                    </ListBox>
                </controls:PanoramaItem>

[I] の下MVVMには、 2つの コントロールNewsと UsersViewModelに対して2 つ、または1つの xamlに対して1 つが必要です。ListBoxListBox ViewModel PanoramaPage.xaml

PanoramaPageViewModel

public class PanoramaPageViewModel : INotifyPropertyChanged
    {
         private ObservableCollection<User> userDataSource;
         private ObservableCollection<News> newsDataSource;

         public ObservableCollection<User> UserDataSource
         {
            get
            {
               if (this.userDataSource == null)
               {
                   this.userDataSource = new ObservableCollection<User>();
               }
               return this.userDataSource;
            }
         }

         public ObservableCollection<News> NewsDataSource
         {
            get
            {
               if (this.newsDataSource == null)
               {
                   this.newsDataSource = new ObservableCollection<News>();
               }
               return this.newsDataSource;
            }
         }

         // LoadUsers(), LoadNews(), etc
    }

また

ユーザービューモデル

public class UsersViewModel : INotifyPropertyChanged
        {
             private ObservableCollection<User> userDataSource;          

             public ObservableCollection<User> UserDataSource
             {
                get
                {
                   if (this.userDataSource == null)
                   {
                       this.userDataSource = new ObservableCollection<User>();
                   }
                   return this.userDataSource;
                }
             }
             //LoadUsers() etc 
         }

ニュースビューモデル

public class NewsViewModel : INotifyPropertyChanged
        {
             private ObservableCollection<News> newsDataSource;          

             public ObservableCollection<News> NewsDataSource
             {
                get
                {
                   if (this.newsDataSource == null)
                   {
                       this.newsDataSource = new ObservableCollection<News>();
                   }
                   return this.newsDataSource;
                }
             }
             //LoadNews() etc 
         }

どう思いますか?

4

1 に答える 1