在WPF中使数据网格的特定列只读?



我已经创建了一个ObservableCollection,这个ObservableCollection包含一个包含多个属性的类类型。然后我在程序启动时向这个ObservableCollection中添加了一些东西。然后,我将xaml文件上的数据网格绑定到这个ObservableCollection上。所以现在数据网格显示了ObservableCollection中的所有内容。

我想让第一列成为只读列。下面是xaml代码:

<Grid Background="White">
<DataGrid Name="DG1" ItemsSource="{Binding ItemsDG1}" CanUserAddRows="False" CanUserDeleteRows="false" CanUserReorderColumns="False" CanUserResizeColumns="False" CanUserResizeRows="False" CanUserSortColumns="false" HorizontalAlignment="Left" Height="600" Margin="0,60,0,0" VerticalAlignment="Top" Width="193" SelectionUnit="Cell" MaxWidth="193" MaxHeight="600" FontSize="10" VerticalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled" ScrollViewer.CanContentScroll="False" RowHeaderWidth="0">
<DataGrid.RowStyle>
<Style TargetType="DataGridRow">
<Setter Property="Background" Value="{Binding MyBackground, Mode=OneWay}" />
<Setter Property="IsHitTestVisible" Value="False"/>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridCheckBoxColumn />
</DataGrid.Columns>
</DataGrid>
下面是构造函数:
public Entry128OutputsViewModel(Entry128OutputsView entry128outputsview)//contructor, dient voor de Mainwindow te linken met de properties van deze klasse.
{
ItemsDG1 = new ObservableCollection<DataTableOutputs>() { };
ItemsDG2 = new ObservableCollection<DataTableOutputs>() { };
FillInDataGrids();
}

下面是我填充数据格的方法:

enter codepublic void FillInDataGrids()
{
for (int i = 1; i < 33; i++)
{
ItemsDG1.Add(new DataTableOutputs { Nr = Convert.ToString(i), A = false, D = false, CommandAdd = "0/0/0", ReturnAdd = "0/0/0" });
}
for (int i = 33; i < 65; i++)
{
ItemsDG2.Add(new DataTableOutputs { Nr = Convert.ToString(i), A = false, D = false, CommandAdd = "0/0/0", ReturnAdd = "0/0/0" });
}
} here

您需要设置您想要的列的IsReadOnly属性

最新更新