Связывание элементов управления с двумя наблюдаемыми коллекциями - PullRequest
0 голосов
/ 14 февраля 2012

У меня есть два класса:

public class ScheduleViewModel : NotificationObject
{
    private ObservableCollection<RecordingsCollection> _collection

    public ObservableCollection<RecordingsCollection> Collection
    {
        get { return _collection; }
        set
        {
            _collection= value;
            RaisePropertyChanged(() => Collection);
        }
    }
}

public class RecordingsCollection : NotificationObject
{
    private ObservableCollection<Recording> _recordings;

    public ObservableCollection<Recording> Recordings
    {
        get { return _recordings; }
        set
        {
            _recordings = value;
            RaisePropertyChanged(() => Recordings);
        }
    }
}

На данный момент у меня есть только фиктивные данные

var a = new ObservableCollection<Recording>();

a.Add(new Recording()
{
   Name = "Bla bla",
   Schedule = new Schedule()
   {
       Name = "bla"
   }
});

Collection.Add(new RecordingsCollection() { Recordings = a });

var b = new ObservableCollection<Recording>();

b.Add(new Recording()
{
   Name = "Bla bla",
   Schedule = new Schedule()
   {
       Name = "bla"
   }
});

Collection.Add(new RecordingsCollection() { Recordings = b });

Я привязываю все это к элементу управления вот так

<ItemsControl Grid.Row="1" ItemsSource="{Binding Collection}">
  <ItemsControl.ItemTemplate>
    <DataTemplate>
       <Grid>
         <telerikGridView:RadGridView
             ItemsSource="{Binding ElementName=RecordingDataPager, Path=PagedSource}">
             <telerikGridView:RadGridView.Columns>
                 <telerikGridView:GridViewDataColumn Header="Schedule" DataMemberBinding="{Binding Path=Recordings.Schedule.Name}"/>
                 </telerikGridView:RadGridView.Columns>
             </telerikGridView:RadGridView>
         <telerik:RadDataPager x:Name="RecordingDataPager"
                  Source="{Binding RecordingsCollection, Mode=TwoWay}"/>
        </Grid>
     </DataTemplate>
   </ItemsControl.ItemTemplate>
 </ItemsControl>

Все работает нормально (т.е. я вижу два менеджера данных, что означает, что он видит две записи), за исключением метода get свойства Recordings в RecordingsCollection Есть идеи?

Править Нашел проблему ... Вместо привязки к RecordingsCollection я должен был привязать к Recordings ... Теперь все работает нормально ... Надеюсь, это поможет кому-то в будущем :)

1 Ответ

0 голосов
/ 14 февраля 2012

Это ответы

<ItemsControl Grid.Row="1" ItemsSource="{Binding Collection}">   
  <ItemsControl.ItemTemplate>   
   <DataTemplate>   
    <Grid>   
     <telerikGridView:RadGridView   
         ItemsSource="{Binding ElementName=RecordingDataPager, Path=PagedSource}">   
         <telerikGridView:RadGridView.Columns>   
             <telerikGridView:GridViewDataColumn Header="Schedule" DataMemberBinding="{Binding Path=Schedule.Name}"/>   
             </telerikGridView:RadGridView.Columns>   
         </telerikGridView:RadGridView>   
     <telerik:RadDataPager x:Name="RecordingDataPager"   
              Source="{Binding Recordings, Mode=TwoWay}"/>   
    </Grid>   
 </DataTemplate>   


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...