如何访问嵌套在视图模型中的ObservableCollection

时间:2015-07-02 06:04:57

标签: c# wpf mvvm

我有一个使用MVVM的简单单窗口WPF应用程序。 XAML绑定到我的MainViewModel.cs类,该类包含一个ObservableCollection站点。现在,SiteModel类有一个名为Owners的属性,它包含第二个ObservableCollection公司。

我需要将我的公司属性绑定到我的XAML中的ComboBox。 ComboBox嵌套在DataGrid中。情况如下所述。

<DataGrid Name="UxSiteGrid" DockPanel.Dock="Top" ItemsSource="{Binding Sites, Source={StaticResource ViewModel}}" AutoGenerateColumns="false" 
              Margin="5,5,5,0" CanUserAddRows="False" CanUserDeleteRows="True" CanUserResizeRows="False" CanUserReorderColumns="False">
        <DataGrid.Columns>
            <DataGridTextColumn Binding="{Binding Name}" Header="Name"/>
            <DataGridTextColumn Binding="{Binding VseId}" Header="Vse ID"/>
            <DataGridTextColumn Binding="{Binding IMO}" Header="IMO"/>
            <DataGridComboBoxColumn SelectedItemBinding="{Binding SiteType}" ItemsSource="{local:EnumValues rdsConfigConnector:SiteType}" Header="Site type"/>
            <DataGridTextColumn Binding="{Binding TimePeriod}" Header="Fetching period"/>
            <DataGridTextColumn Binding="{Binding Latitude}" Header="Latitude"/>
            <DataGridTextColumn Binding="{Binding Longitude}" Header="Longitude"/>
            <DataGridTextColumn Binding="{Binding OffsetLatitude}" Header="Offset latitude"/>
            <DataGridTextColumn Binding="{Binding OffsetLongitude}" Header="Offset longitude"/>


            <DataGridTemplateColumn Header="Site Owners">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate >
                        <ComboBox ItemsSource="{Binding Owners.companies}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
            </DataGridTemplateColumn>

        </DataGrid.Columns>
    </DataGrid>

1 个答案:

答案 0 :(得分:0)

DataTemplate中的数据上下文应该已经是您的网站,因此{Binding Owners.companies}应该有效(请参阅here)。 请注意,数据绑定区分大小写=&gt;它可能会{Binding Owners.Companies}吗?

如果一切正确:您是否在输出窗口中出现“绑定错误”?