2012-06-05 86 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虛擬機的構造函數,然後您可以從那裏訪問它,因爲您可以將它存儲在私有成員中。

也許還有另一種解決方案可能更適合,但因爲我沒有足夠的細節問題。

相關問題