2012-06-13 51 views
0

我正在开发Silverlight业务应用程序。在这里我正在Silverlight子窗口中填充一个数据网格。现在我面临的问题是我的数据网格有四列,但我只编辑其中一列,因为可编辑和其余三个应该保持只读状态。如何在Silverlight数据网格中编辑一个特定列

我该如何实现它。我可以使整个数据网格可编辑,但不是一个特定的列。请注意,这些列目前是自动生成的。

在此先感谢您的帮助。

回答

0

如果定义前手列的名称,这将是很容易,只需要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事件中执行此事件,因为如果这样做太早,您的列将不存在。

希望这有助于

+0

@Staindart有什么办法可以与autogeneratecolumns = true一起工作,因为现在的问题。 – NeelDotNet

+0

@NendDotNet看到我上面的编辑。 – Stainedart

0

如果你不想改变你的XAML你可以在Editable属性添加到您的对象的属性。

相关问题