2017-12-28 4 views
3

나는 DataGridCheckBoxColumn 구현했습니다 :속성 값을 기준으로 확인란을 활성화 또는 비활성화하는 방법은 무엇입니까? 내 데이터 그리드에서

<DataGrid ItemsSource="{Binding Collection}"> 
    <DataGrid.Columns> 
     <DataGridCheckBoxColumn Binding="{Binding Selected}" 
           ElementStyle="{StaticResource MaterialDesignDataGridCheckBoxColumnStyle}" 
           EditingElementStyle="{StaticResource MaterialDesignDataGridCheckBoxColumnEditingStyle}"> 
     <DataGridCheckBoxColumn.CellStyle> 
      <Style TargetType="DataGridCell"> 
       <EventSetter Event="CheckBox.Unchecked" Handler="Match_Unchecked"/> 
        <Style.Triggers> 

             <!-- Enabling --> 
             <DataTrigger Binding="{Binding DataContext.IsAdding, 
        RelativeSource={RelativeSource AncestorType=Window}}" Value="false"> 
              <Setter Property="IsEnabled" Value="True" /> 
             </DataTrigger> 

             <!-- Disabling --> 
             <DataTrigger Binding="{Binding DataContext.IsAdding, 
        RelativeSource={RelativeSource AncestorType=Window}}" Value="True"> 
              <Setter Property="IsEnabled" Value="False" /> 
             </DataTrigger> 

     </Style> 
</DataGridCheckBoxColumn.CellStyle> 

을 당신은 내가 내부의 내용으로 Cell, 그래서 본질적 특성 IsAdding이 거짓 인 경우, DataGridCheckBoxColumnStyleDataTrigger를 삽입 한 볼 수 그렇지 않으면 사용하지 않도록 설정해야합니다.

이것은 작동하지 않는 것 같습니다. Cell도 사용할 수 있습니다. 이유가 무엇입니까?

+0

스타일 대상을'DatGridCell' 대신'CheckBox'로 설정해 보았습니까? 귀하의 이벤트 설정자는 효과가 있습니까? – XAMlMAX

+0

@XAMlMAX'CheckBox'는'DataGridCell' 안에 있고 하나의 스타일을 두 개 가질 수는 없습니다 – MrFantastic

+0

그걸 이해하고 있지만 다른 스타일을 설정하라고 요구하지는 않습니다. 목표 타입을 변경하려고합니다. 그리고 당신의 이벤트 세터는 효과가 있습니까? – XAMlMAX

답변

0

문제가 응용 프로그램의 LogicalTree으로 의심됩니다. 가지고있는 코드는 실제로 잘 작동해야하지만,이 코드는 inside of the demo application 일 수 있습니다. 일반적으로 이것은 괜찮을 것이지만 논리 트리를 깨는 XAML을 표시하는 컨트롤이 추가되었습니다 (진행 중에 I have a fix이지만 아직 완료되지 않았습니다).

당신은 데모 응용 프로그램이 명 변경하여이 문제를 해결할 수 있습니다 : 일반 StackPanelXamlDisplayerPanel를 교체 MainWindow.xaml에서

  1. Grids.xaml에서 정기적 ContentControl
  2. XamlDisplayerHost 교체

    그 후 스타일이 예상대로 작동해야합니다.

관련 문제