您好我正在使用MVVM-Light框架开发WinRT项目。 我有一个listview,其中ItemsSource是我的ViewModel上的ObservableCollection。 此ObservableCollection中的对象(ClassOne)具有一个ObservableCollection本身的字段。 在Listview中,我有ComboBox,谁的itemsSource我想绑定到第二个ObservableCollection(这是另一个observablecollection中的字段)。 第二个ObservableCollection在我的View的ViewModel中动态填充。
我的Xaml代码:
<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}}">
但这不起作用。
这是我在ViewModel上的CollectionOne属性:
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; }
}
第二类只包含一个字符串属性。
public class ClassTwo
{
public string DataCollectionTwo{ get; set; }
}
有什么想法吗?
答案 0 :(得分:1)
我在测试项目中试过了,
您只需交换代码
即可<ComboBox ItemsSource="{Binding Path=CorrespondingViewModel.CollectionOne.CollectionTwo, Source={StaticResource Locator}}">
与
<ComboBox ItemsSource="{Binding CollectionTwo}">
在我的测试项目中工作正常。
希望有所帮助!