我已经建立了一个绑定到ObservableCollection的数据网格。此网格中的一列由用户控件填充,该控件需要从父数据网格绑定的ObservableCollection获取数据。是否可以绑定子用户控件以使用来自ObervableCollection的数据?我正在使用的XAML是:
<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>
网格绑定到“viewModel”对象内的“areaList”。我需要让AlarmView用户控件访问ObservableCollection中的每个对象。有没有办法做到这一点?
答案 0 :(得分:2)
使用DataContext
属性设置绑定对象:
<DataTemplate>
<local:AlarmView DataContext="{Binding}"/>
</DataTemplate>
由于DataTemplate已绑定到areaList
,因此可以使用直接绑定设置DataContext。从这里,子视图将可以访问areaList
个对象。
答案 1 :(得分:0)
我会将列表传递给enitity vm的构造函数,然后您可以从那里访问它,因为您可以将它存储在私有成员中。
也许有另一个解决方案可能更适合,但为此我没有足够的细节来解决这个问题。