【发布时间】:2011-10-05 09:36:33
【问题描述】:
我有一个 WPF 应用程序,其中包含两个共享相同 ItemsSource 的 DataGrid。当我将 DataGrid 的 IsReadOnly 属性之一设置为 true 时,我无法将记录添加到另一个 DataGrid。我仍然可以编辑第二个数据网格的内容,但无法添加记录。
这是故意的吗?有没有办法解决这个问题?我可以对 DataGrid 使用 IsEnabled="False",但是我无法在其中滚动。
设置如下:
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;
}
}
}
【问题讨论】:
-
您的意思是以编程方式添加记录吗(即通过 C# 如同在 MainWindow 构造函数中一样)?
-
退出 IsReadOnly 模式的 DataGrid 通常有一个空白行,可用于添加记录。在这种情况下,此空白行不再可用。我没有尝试以编程方式添加记录。
-
也许将dgB的数据绑定设置为单向?
标签: c# wpf xaml datagrid itemssource