【问题标题】:How to make one specific column editable in a Silverlight datagrid如何在 Silverlight 数据网格中使一个特定的列可编辑
【发布时间】:2012-06-13 15:06:04
【问题描述】:

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

我怎样才能实现它。我可以使整个数据网格可编辑,但不能编辑一个特定的列。请注意,这些列当前是自动生成的。

提前感谢您的帮助。

【问题讨论】:

    标签: silverlight


    【解决方案1】:

    如果您事先定义了列的名称,这将容易得多,并且只需要 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>
    

    在上面的示例中,名称列是可编辑的,但其他 2 列是只读的。请注意,我使用的是绑定,因此对于后面的代码,您可能不需要更改任何内容,您只需替换绑定的属性即可。

    编辑

                    foreach (DataGridColumn item in DataGrid.Columns)
                    {
                           //if(column name condition of column id)
                        item.IsReadOnly = true;
                    }
    

    此循环应允许您将所有列设置为只读。我个人会在 DataGrid Loaded 事件中执行此事件,因为如果太早完成,您的列将不存在。

    希望这会有所帮助,

    【讨论】:

    • @Staindart 有什么办法可以与 autogeneratecolumns = true 一起工作,因为这是现在的问题。
    【解决方案2】:

    如果您不想更改 XAML,可以将 Editable 属性添加到对象的属性中。

    【讨论】:

      猜你喜欢
      • 2011-10-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-04
      • 2011-04-24
      • 2016-04-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多