我发现了一些奇怪的东西:我有一个带有两个数据网格的表单,它们绑定到同一个集合。根据 Xaml 中数据网格的顺序,行为会有所不同。
这按预期工作(存在用于添加的额外行):
<DockPanel>
<DockPanel DockPanel.Dock="Right">
<Label Content="ReadOnlyView" DockPanel.Dock="Top"/>
<DataGrid ItemsSource="{Binding Persons}" IsReadOnly="True" />
</DockPanel>
<DockPanel>
<Label Content="EditorView" DockPanel.Dock="Top" />
<DataGrid ItemsSource="{Binding Persons}" IsReadOnly="False" CanUserAddRows="True" />
</DockPanel>
</DockPanel>
以这种方式排列 xaml 让我感到困惑(没有额外的添加行)
<DockPanel>
<DockPanel>
<Label Content="EditorView" DockPanel.Dock="Top" />
<DataGrid ItemsSource="{Binding Persons}" IsReadOnly="False" CanUserAddRows="True" />
</DockPanel>
<DockPanel DockPanel.Dock="Right">
<Label Content="ReadOnlyView" DockPanel.Dock="Top"/>
<DataGrid ItemsSource="{Binding Persons}" IsReadOnly="True" />
</DockPanel>
</DockPanel>
下面是我为此使用的虚拟 ViewModel:
public class PersonsViewModel
{
public PersonsViewModel()
{
Persons = new ObservableCollection<Person>
{
new Person {Name = "Johan"},
new Person {Name = "Dave"},
};
}
public ObservableCollection<Person> Persons { get; private set; }
}
public class Person
{
public string Name { get; set; }
}
我的问题是这种行为的原因是什么?