1

嗨,我正在使用 MVVM-Light 框架开发 WinRT 项目。我有一个列表视图,其中 ItemsSource 是我的 ViewModel 上的 ObservableCollection。此 ObservableCollection 中的对象 (ClassOne) 有一个字段,该字段本身就是 ObservableCollection。在 Listview 我有 ComboBoxes 谁的 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; }
}

有任何想法吗?

4

1 回答 1

1

我在一个测试项目中尝试过,

你可以简单地交换你的代码

<ComboBox ItemsSource="{Binding Path=CorrespondingViewModel.CollectionOne.CollectionTwo, Source={StaticResource Locator}}"> 

<ComboBox ItemsSource="{Binding CollectionTwo}">

在我的测试项目中运行良好。

希望有帮助!

于 2013-03-20T13:29:13.990 回答