我正在开发Silverlight业务应用程序。在这里我正在Silverlight子窗口中填充一个数据网格。现在我面临的问题是我的数据网格有四列,但我只编辑其中一列,因为可编辑和其余三个应该保持只读状态。如何在Silverlight数据网格中编辑一个特定列
我该如何实现它。我可以使整个数据网格可编辑,但不是一个特定的列。请注意,这些列目前是自动生成的。
在此先感谢您的帮助。
我正在开发Silverlight业务应用程序。在这里我正在Silverlight子窗口中填充一个数据网格。现在我面临的问题是我的数据网格有四列,但我只编辑其中一列,因为可编辑和其余三个应该保持只读状态。如何在Silverlight数据网格中编辑一个特定列
我该如何实现它。我可以使整个数据网格可编辑,但不是一个特定的列。请注意,这些列目前是自动生成的。
在此先感谢您的帮助。
如果定义前手列的名称,这将是很容易,只需要XAML代码
<data:Datagrid x:Name="Grid11" AutoGenerateColumns="False" ColumnWidth="*" SelectionMode="Single" >
<data:DataGrid.Columns>
<data:DataGridTextColumn Header="Index" IsReadOnly="True" Binding="{Binding LocalIndex}" />
<data:DataGridTextColumn Header="ID" IsReadOnly="True" Binding="{Binding Id}" />
<data:DataGridTextColumn Header="Name" Binding="{Binding Name, ValidatesOnNotifyDataErrors=True, NotifyOnValidationError=True, Mode=TwoWay}" >
</data:DataGrid.Columns>
</data:SolacomDatagrid>
在上面的例子中name列是可编辑的,但其他2是只读的。注意我正在使用绑定,所以对于你后面的代码,可能不需要改变任何你只需要替换被绑定的属性的东西。
编辑
foreach (DataGridColumn item in DataGrid.Columns)
{
//if(column name condition of column id)
item.IsReadOnly = true;
}
这个循环应该允许您设置的所有列设置为只读。我个人会在DataGrid Loaded事件中执行此事件,因为如果这样做太早,您的列将不存在。
希望这有助于
如果你不想改变你的XAML你可以在Editable属性添加到您的对象的属性。
@Staindart有什么办法可以与autogeneratecolumns = true一起工作,因为现在的问题。 – NeelDotNet
@NendDotNet看到我上面的编辑。 – Stainedart