同じItemsSourceを共有する2つのDataGridを持つWPFアプリケーションがあります。 DataGridのIsReadOnlyプロパティのいずれかをtrueに設定すると、他のDataGridにレコードを追加する機能が失われます。私はまだ2番目のデータグリッドの内容を編集できますが、レコードを追加することはできません。WPF:2つのDataGrid、同じItemsSource、1つのIsReadOnly、Bug?
これは対象ですか?これを回避する方法はありますか?私はIsEnabled = "False"をDataGridに使うことができましたが、その中でスクロールする能力を失います。ここで
はセットアップです:
XAML:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<DataGrid Name="dgA" Grid.Row="0" AutoGenerateColumns="False">
<DataGrid.Columns>
<DataGridTextColumn Header="FirstName" Binding="{Binding Path=FirstName}" />
<DataGridTextColumn Header="LastName" Binding="{Binding Path=LastName}" />
</DataGrid.Columns>
</DataGrid>
<DataGrid Name="dgB" Grid.Row="1" AutoGenerateColumns="False" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="FirstName" Binding="{Binding Path=FirstName}" />
<DataGridTextColumn Header="LastName" Binding="{Binding Path=LastName}" />
</DataGrid.Columns>
</DataGrid>
</Grid>
のC#:
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
List<Person> persons = new List<Person>();
persons.Add(new Person() { FirstName = "Bob", LastName = "Johnson" });
persons.Add(new Person() { FirstName = "John", LastName = "Smith" });
dgA.ItemsSource = persons;
dgB.ItemsSource = persons;
}
class Person
{
public Person() { }
public string FirstName
{
get;
set;
}
public string LastName
{
get;
set;
}
}
}
はあなたがレコードを追加意味するか、あなたのために別々の
ListViewCollection's
をあなたはObservableCollection
にList
を変更することで、好きなように動作し、使用して取得することができますを真として出てきますプログラムで(つまり、MainWindowのコンストラクタのようにC#経由で)? –
IsReadOnlyモードのDataGridには、通常、レコードを追加するために使用できる空の行があります。この空の行は、このインスタンスでは使用できなくなります。プログラムでレコードを追加しようとしたことはありません。 – Khan
おそらくdgBのデータバインディングを一方向に設定していますか? –