2013-02-11 18 views
6

読み取り専用のDataGridで列を編集可能にするにはどうすればいいですか?読み取り専用のDataGridで編集可能な列を作成する方法は?

<DataGrid x:Name="dgLoadDtl" Height="315" Width="710" Grid.Row="0" 
        HorizontalAlignment="Left" VerticalAlignment="Bottom" 
        Style="{DynamicResource StyleDatagrid}" 
        IsReadOnly="true"> 

      <DataGrid.Columns>      

       <DataGridTextColumn Foreground="Black" Width="60" Header="Sctn" Binding="{Binding Sctn, Mode=TwoWay}" IsReadOnly="false" />      
       <DataGridTextColumn Foreground="Black" Width="140" Header="CustName" Binding="{Binding CustName, Mode=TwoWay}" /> 
       <DataGridTextColumn Foreground="Black" Width="140" Header="Address" Binding="{Binding Address1, Mode=TwoWay}" /> 
       <DataGridTextColumn Foreground="Black" Width="50" Header="Bulk or Bag" Binding="{Binding BulkorBag, Mode=TwoWay}" /> 
       <DataGridTextColumn Foreground="Black" Width="80" Header="ProdCode" Binding="{Binding ProdCode, Mode=TwoWay}" /> 
       <DataGridTextColumn Foreground="Black" Width="80" Header="MedCode" Binding="{Binding MedCode, Mode=TwoWay}" /> 

+6

あなたがメインの 'DataGrid'から' 'IsReadyOnly =「true」を削除する必要がありますし、読み取り専用である各列のためにあなたが追加する必要があります'IsReadOnly =" true "' ' Header =" CustName "バインディング=" {バインディングCustName、Mode = TwoWay} "IsReadOnly =" true "/>' –

+0

/動作しません。 – Kirka121

+0

このチェックアウト: http://stackoverflow.com/questions/4471934/can-i-specify-which-columns-are-editable-in-a-wpf-datagrid –

答えて

10

私はのObservableCollectionにし、次の2つのオプションがあり、ここからのDataGridののItemsSourceをバインドサンプルを作成しました。

  1. セットAutoGenerateColumns =データグリッドの「偽」とあなたはIsReadOnlyのは=「false」に設定します編集可能にする列を除くすべての列にIsReadOnly =「True」に設定してください。
  2. AutoGenerateColumns = "True"(デフォルトであるため、XAMLから属性を削除するだけです)、編集可能にする列以外のすべてのプロパティのSetModelを非表示にします。

ここでは、オプション1のための私のサンプルコードです:

<DataGrid x:Name="dgLoadDtl" Grid.Row="0" HorizontalAlignment="Left" VerticalAlignment="Top" ItemsSource="{Binding MyData}" AutoGenerateColumns="False"> 
    <DataGrid.Columns> 
     <DataGridTextColumn Foreground="Black" Width="60" Header="Sctn" Binding="{Binding Sctn, Mode=TwoWay}" IsReadOnly="false" /> 
     <DataGridTextColumn Foreground="Black" Width="140" Header="CustName" Binding="{Binding CustName, Mode=TwoWay}" IsReadOnly="True"/> 
     <DataGridTextColumn Foreground="Black" Width="140" Header="Address" Binding="{Binding Address1, Mode=TwoWay}" IsReadOnly="True"/> 
     <DataGridTextColumn Foreground="Black" Width="50" Header="Bulk or Bag" Binding="{Binding BulkorBag, Mode=TwoWay}" IsReadOnly="True"/> 
     <DataGridTextColumn Foreground="Black" Width="80" Header="ProdCode" Binding="{Binding ProdCode, Mode=TwoWay}" IsReadOnly="True"/> 
     <DataGridTextColumn Foreground="Black" Width="80" Header="MedCode" Binding="{Binding MedCode, Mode=TwoWay}" IsReadOnly="True"/> 
    </DataGrid.Columns> 
</DataGrid> 
関連する問題