2014-09-23 1 views
0

정규 DataGridCheckBoxColumn이 명령을 허용하지 않는 것 같아서 DataGridTemplateColumn을 내부의 체크 박스와 함께 사용하기로 결정했습니다. 문제는 체크 박스를 선택하거나 선택 취소하기 전에 명령이 실행되는 이유입니다. 왜 이런 일이 발생합니까?DataGridTemplateColumn 내에서 CheckBox를 선택하기 전에 내 명령이 실행되는 이유는 무엇입니까?

내 datGrid이

<DataGrid x:Name="gridSpecifications" AutoGenerateColumns="False" ItemsSource="{Binding MyEntityList}"> 
    <DataGrid.Resources> 
     <DataTemplate DataType="{x:Type DB:CoreNamedEntity}"> 
      <TextBlock Text="{Binding Name}"></TextBlock> 
     </DataTemplate> 
    </DataGrid.Resources> 

    <DataGrid.Columns> 
     <DataGridTextColumn Header="Id" Width="auto" Binding="{Binding Path=Id}"></DataGridTextColumn> 
     <DataGridTemplateColumn Header="Description"> 
      <DataGridTemplateColumn.CellTemplateSelector> 
       <TS:PhotometricTypeSelector 
        DataTemplateOne="{StaticResource PhantomNameTemplate}" 
        DataTemplateTwo="{StaticResource PhantomCountTemplate}"> 
       </TS:PhotometricTypeSelector> 
      </DataGridTemplateColumn.CellTemplateSelector> 
     </DataGridTemplateColumn> 
     <DataGridTemplateColumn Header="Hidden"> 
      <DataGridTemplateColumn.CellEditingTemplate> 
       <DataTemplate> 
        <CheckBox IsChecked="{Binding Hidden}" Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}, Path=DataContext.HideCommand}" CommandParameter="{Binding}"></CheckBox> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellEditingTemplate> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <CheckBox IsChecked="{Binding Hidden}" IsEnabled="False"></CheckBox> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 

     </DataGridTemplateColumn> 


    </DataGrid.Columns> 
</DataGrid> 

이 명령 코드

private void HideCommandExecute(object param) 
{ 
    InputsAccessor inputsAccessor = new InputsAccessor(); 
    var type = param.GetType(); 
    int id; 
    string name = type.Name; 
    var ParamId = type.GetProperty("Id").GetValue(param, null); 
    bool ParamHidden = (bool)type.GetProperty("Hidden").GetValue(param, null); 
    id = (int)ParamId; 
    .... 
} 
+0

자동 체크 아웃이 발생합니까? – alykins

+0

명령에 코드 표시 –

답변

0

의 일부인의 IsChecked 속성 UpdateSourceTrigger =하여 PropertyChanged 또는이 늘 명령이 호출 될 때까지 설정할 수 있어야합니다.

 <CheckBox IsChecked="{Binding Hidden, UpdateSourceTrigger=PropertyChanged}" 
    CheckBox.Command="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType=DataGrid}, Path=DataContext.HideCommand}" CommandParameter="{Binding}"></CheckBox> 
관련 문제