我已经设置了一个绑定(bind)到 ObservableCollection 的数据网格。该网格中的一列由用户控件填充,该用户控件需要从父数据网格绑定(bind)到的 ObservableCollection 获取数据。是否可以绑定(bind)子用户控件以使用 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>
网格绑定(bind)到“viewModel”对象内的“areaList”。我需要让 AlarmView 用户控件能够访问 ObservableCollection 中的每个对象。有办法做到这一点吗?
最佳答案
使用DataContext
属性设置绑定(bind)对象:
<DataTemplate>
<local:AlarmView DataContext="{Binding}"/>
</DataTemplate>
由于DataTemplate已经绑定(bind)到areaList
,因此您可以通过直接绑定(bind)来设置DataContext。从这里, subview 将可以访问 areaList
对象。
关于wpf - 将绑定(bind)数据传递到 DataGrid 中的用户控件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10899939/