0

我在用户控件中有一个网格并分配了一个数据上下文

<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为 DatacontextGrdContainer_DataContextChanged时会被触发,但是当我在 Grid datacontex source( FormAttributeMappings.add(FormAttributeMapping)) 中添加一些项目时GrdContainer_DataContextChanged不会触发

4

1 回答 1

0

添加项目List不会触发DataContextChanged事件,因为它不会更改DataContext属性。要触发事件,您必须在FormAttributeMappings每次添加新项目时分配/更改属性。

更好的解决方案是将“FormAttributeMappings”属性的类型更改为ObservableCollection并为CollectionChanged事件创建处理程序。

于 2013-06-10T09:55:26.467 回答