在源中添加项目时,Grid DataContextChanged未触发
本文关键字:DataContextChanged Grid 添加 项目 | 更新日期: 2023-09-27 18:17:45
我在用户控件中有一个网格,并分配了一个数据上下文
<Grid x:Name="GrdContainer" DataContext="{Binding FormAttributeMappings,Mode= TwoWay}" DataContextChanged="GrdContainer_DataContextChanged" UseLayoutRounding="True">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="5"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="10"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="5"/>
</Grid.ColumnDefinitions>
private void GrdContainer_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e)
{
......
}
当我分配List<FormAttributeMapping> FormAttributeMappings
作为数据上下文时,GrdContainer_DataContextChanged
将是火,但是当我在网格数据上下文源(FormAttributeMappings.add(FormAttributeMapping)
)中添加一些项目时,GrdContainer_DataContextChanged
不火
添加项目到List
不会触发DataContextChanged
事件,因为它不会改变DataContext
属性。要触发事件,您必须在每次添加新项目时传递/更改FormAttributeMappings
属性。
更好的解决方案是将' formattributemapping '属性类型更改为ObservableCollection,并为CollectionChanged事件创建处理程序。