2012-06-05 39 views
2

我已经设置了绑定到ObservableCollection的数据网格。此网格中的一列由用户控件填充,该用户控件需要从父数据网格绑定到的ObservableCollection中获取数据。是否可以绑定子用户控件以使用ObervableCollection中的数据?我使用的XAML是:将绑定数据传递给DataGrid中的用户控件

<Window x:Class="Hotspots_Control.MainWindow" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:local="clr-namespace:Hotspots_Control" 
    Title="MainWindow" Height="350" Width="525"> 
<Window.DataContext> 
    <local:viewModel/> 
</Window.DataContext> 
<DataGrid ItemsSource="{Binding areaList}" Name="hotspotsGrid" AutoGenerateColumns="False" CanUserAddRows="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Header="Area" Binding="{Binding Path=area}" IsReadOnly="True"/> 
     <DataGridTemplateColumn Header="Alarms"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <local:AlarmView/> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 

网格绑定到 “areaList” 中的 “视图模型” 对象中。我需要让AlarmView用户控件访问ObservableCollection中的每个对象。有没有办法做到这一点?

回答

2

使用DataContext属性设置绑定的对象(S):

<DataTemplate> 
    <local:AlarmView DataContext="{Binding}"/> 
</DataTemplate> 

由于DataTemplate中已经被绑定到areaList,您可以直接绑定设置的DataContext。从这里,子视图将有权访问areaList对象。

+0

This Works,thanks! – Gtaray

0

我会将列表传递给enitity虚拟机的构造函数,然后您可以从那里访问它,因为您可以将它存储在私有成员中。

也许还有另一种解决方案可能更适合,但因为我没有足够的细节问题。

相关问题