私は何か奇妙なことを発見しました: 同じコレクションにバインドされた 2 つのデータグリッドを持つフォームがあります。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; }
}
私の質問は、この動作の理由は何ですか?