如何从可观察集合设置组合框的ItemsSource
本文关键字:组合 ItemsSource 设置 集合 观察 | 更新日期: 2023-09-27 18:04:46
嗨,我正在做一个使用MVVM-Light框架的WinRT项目。我有一个列表视图,ItemsSource是我的ViewModel上的一个ObservableCollection。这个ObservableCollection中的对象(ClassOne)有一个字段,该字段本身就是一个ObservableCollection。在Listview中,我有ComboBoxes谁的itemsSource我想绑定到第二个ObservableCollection(这是在另一个ObservableCollection字段)。第二个ObservableCollection在我的View的ViewModel中被动态填充。
My Xaml code:
<ListView ItemsSource="{Binding CollectionOne}">
<ListView.ItemTemplate>
<DataTemplate>
<StackPanel>
<TextBlock Text="{Binding DataCollectionOne}"></TextBlock>
<ComboBox ItemsSource="{Binding Path=CorrespondingViewModel.CollectionOne.CollectionTwo, Source={StaticResource Locator}}">
<ComboBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding DataCollectionTwo}"/>
</DataTemplate>
</ComboBox.ItemTemplate>
</ComboBox>
</StackPanel>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
我想做的是:
<ComboBox ItemsSource="{Binding Path=CorrespondingViewModel.CollectionOne.CollectionTwo, Source={StaticResource Locator}}">
但是这行不通。
这是我的属性CollectionOne在ViewModel:
private ObservableCollection<ClassOne> _collectionOne;
public ObservableCollection<ClassOne> CollectionOne
{
get { return _collectionOne;; }
set
{
if (_collectionOne; == value)
{
return;
}
_collectionOne; = value;
RaisePropertyChanged(() => CollectionOne);
}
}
这是ObservableCollection(ClassOne)中的类:
public class ClassOne
{
public string DataCollectionOne{ get; set; }
public ObservableCollection<ClassTwo> CollectionTwo{ get; set; }
}
第二类只包含一个String属性。
public class ClassTwo
{
public string DataCollectionTwo{ get; set; }
}
任何想法?
我在一个测试项目中尝试过,
你可以简单地交换代码
<ComboBox ItemsSource="{Binding Path=CorrespondingViewModel.CollectionOne.CollectionTwo, Source={StaticResource Locator}}">
<ComboBox ItemsSource="{Binding CollectionTwo}">
在我的测试项目中运行良好。
希望有帮助!