2013-01-18 2 views
0

wpf 형식의 DataGrid가 있습니다. 체크 박스가있는 행이 있습니다. 헤더 체크 박스를 선택/선택 취소하여 모든 행을 선택/선택 취소하고 싶습니다.격자의 모든 행 선택/선택 취소

그러나이 오류가 발생합니다 : "개체 참조가 개체의 인스턴스로 설정되지 않았습니다"chk.IsChecked = false에 있습니다.

enter image description here

C# 코드 :

private void myDataGrid_LoadingRow(object sender, DataGridRowEventArgs e) 
    { 
     CheckBox chk = (CheckBox)this.myDataGrid.Columns[0].GetCellContent(e.Row); 
     chk.IsChecked = false; 
     checkboxes.Add(chk); 
    } 

XAML 코드는 다음과 같습니다 사전에

<Window x:Class="WpfApplication1.Grid" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    Title="Grid" Height="300" Width="300"> 
<Grid> 
    <DataGrid x:Name="myDataGrid" 
       VerticalAlignment="Top" 
       Grid.Column="0" 
       AutoGenerateColumns="False" 
       LoadingRow="myDataGrid_LoadingRow" 
       Loaded="myDataGrid_Loaded"> 
     <DataGrid.Columns> 
      <DataGridTemplateColumn Width="80"> 
       <DataGridTemplateColumn.Header> 
        <CheckBox HorizontalAlignment="Center" 
           Click="chk_Click" 
           VerticalAlignment="Center" 
           Name="chckAll"> 
        </CheckBox> 
       </DataGridTemplateColumn.Header> 

       <DataGridTemplateColumn.CellTemplate> 
        <DataTemplate> 
         <CheckBox x:Name="chk" 
            HorizontalAlignment="Center" 
            HorizontalContentAlignment="Center"></CheckBox> 
        </DataTemplate> 
       </DataGridTemplateColumn.CellTemplate> 
      </DataGridTemplateColumn> 

      <DataGridTextColumn Header="First Name" 
           Width="100" 
           Binding="{Binding FirstName}"></DataGridTextColumn> 
      <DataGridTextColumn Header="Last Name" 
           Width="100" 
           Binding="{Binding LastName}"></DataGridTextColumn> 
     </DataGrid.Columns> 
    </DataGrid> 
</Grid> 

감사합니다.

+0

chk 변수가 null 인 것처럼 보입니다 (라디오 버튼을 선택하지 않은 것). 중단 점을 넣고 null인지 확인할 수 있습니까? – Sonhja

+0

예, chk 변수가 null이됩니다. 나는이 코드가 무엇이 잘못되었는지 정말로 모른다 : CheckBox chk = (CheckBox) this.myDataGrid.Columns [0] .GetCellContent (e.Row); –

+0

DataGridRow를 얻으려면 다음 링크를 따라야합니다. http://stackoverflow.com/questions/1976087/wpf-datagrid-set-selected-row – Sonhja

답변

1

당신이이 link에 대해 말할 수 있습니다. 이 같은

당신이해야 뭔가 :

DataGridRow row = (DataGridRow)dataGrid.ItemContainerGenerator.ContainerFromIndex(dataGrid.SelectedIndex); 
CheckBox chk = (CheckBox)this.myDataGrid.Columns[0].GetCellContent(e.Row); 

내 생각은, 지금 노력하지.

+0

+1 나는 너를 좋아한다. –