Похоже, вы используете MVVM. Вы, безусловно, можете связать с несколькими ObservableCollections. Вопрос на самом деле: вам нужно ? Вы должны зарезервировать привязку к ObserableCollections для случаев, когда ваша ViewModel изменяется, и вам необходимо держать ваш View обновленным с изменениями.
Вот пример, который я вам показал для View, привязанного к двум ObservableCollections и одному List в ViewModel. Так что - да - вы, безусловно, можете связываться с чем угодно. В этом примере два ObservableCollections будут попеременно обновляться. Это помогает?
Я разместил код для этого здесь , если это поможет иметь весь проект против.
Вид:
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<StackPanel Orientation="Vertical">
<TextBlock>Bind to List:</TextBlock>
<ListView ItemsSource="{Binding Path=Users}" Height="20"/>
<TextBlock>Bind to ObservableCollection1:</TextBlock>
<ListView ItemsSource="{Binding Path=ObservableCollection1}"
Height="100"/>
<TextBlock>Bind to ObservableCollection2:</TextBlock>
<ListView ItemsSource="{Binding Path=ObservableCollection2}"
Height="100"/>
</StackPanel>
</Window>
ViewModel (представление привязано к этой ViewModel)
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Timers;
using System.Windows;
using System.Windows.Threading;
namespace WpfApplication1
{
public class Class1
{
public List<string> Users{get;set;}
public ObservableCollection<string> ObservableCollection1 { get; set; }
public ObservableCollection<string> ObservableCollection2 { get; set; }
public Class1()
{
this.Users = new List<string>{ "bob", "mary" };
this.ObservableCollection1 = new ObservableCollection<string>();
this.ObservableCollection2 = new ObservableCollection<string>();
int counter = 0;
Timer t1 = new Timer();
t1.Enabled = true;
t1.Interval = 1000;
t1.Elapsed += delegate
{
Application.Current.Dispatcher.Invoke(
DispatcherPriority.Send, new Action(delegate
{
if(counter % 2 == 1)
this.ObservableCollection1.Add(DateTime.Now.ToString());
else
this.ObservableCollection2.Add(DateTime.Now.ToString());
++counter;
}));
};
}
}
}