2016-10-03 2 views
1

지난 한 시간 동안 간단한 문제가되는 해결책을 찾았습니다. Xceed 커뮤니티에서 한 번의 클릭으로 편집 가능한 바운드를 만드는 방법 DataGridControl. Xceed DataGridControl의 한 번 클릭으로 편집 가능한 바운드 CheckBox

는 명확하게하려면 : 나는 상관없이 사용자가 선택한 항목 행의 모든 ​​ CheckBox을 클릭하고 뷰 모델의 IsSelected 속성이 따라 변경이 수 CheckBox 열을합니다.

다음은 내가 시도한 최신 순열입니다. 이 코드는 모델에서 값을 읽지 만 CheckBox을 클릭하면 어떤 이유로 든 IsSelected 설정기를 호출하지 않습니다.

<xcdg:DataGridControl x:Name="DictionariesDataGridControl" ItemsSource="{Binding Mode=OneWay, Source={StaticResource DictionariesViewSource}}" AutoCreateColumns="False" AutoRemoveColumnsAndDetailConfigurations="False" SelectionMode="Extended" NavigationBehavior="RowOnly"> 
    <xcdg:DataGridControl.View> 
     <xcdg:TableView UseDefaultHeadersFooters="False" ShowRowSelectorPane="False" VerticalGridLineThickness="0"> 
      <xcdg:TableView.FixedHeaders> 
       <DataTemplate> 
        <xcdg:ColumnManagerRow BorderThickness="0"/> 
       </DataTemplate> 
      </xcdg:TableView.FixedHeaders> 
     </xcdg:TableView> 
    </xcdg:DataGridControl.View> 
    <xcdg:DataGridControl.Columns> 
     <xcdg:Column FieldName="IsSelected" MinWidth="20" MaxWidth="20" CellEditorDisplayConditions="RowIsCurrent"> 
      <xcdg:Column.CellContentTemplate> 
       <DataTemplate> 
        <CheckBox IsChecked="{Binding ., Mode=OneWay}" IsHitTestVisible="False"/> 
       </DataTemplate> 
      </xcdg:Column.CellContentTemplate> 
      <xcdg:Column.CellEditor> 
       <xcdg:CellEditor> 
        <xcdg:CellEditor.EditTemplate> 
         <DataTemplate> 
          <CheckBox IsChecked="{Binding ., Mode=TwoWay}"/> 
         </DataTemplate> 
        </xcdg:CellEditor.EditTemplate> 
       </xcdg:CellEditor> 
      </xcdg:Column.CellEditor> 
     </xcdg:Column> 
    </xcdg:DataGridControl.Columns> 

내가 필요 정확히 수행하는,이 노력하고있어 1

편집 : 어떤 이유로 CheckBox가와 스타일되며, 제외

<xcdg:Column FieldName="IsSelected" MinWidth="20" MaxWidth="20" CellEditorDisplayConditions="Always"/> 

파란색 배경!

Check boxes with blue backgrounds

는 I 색상 등 #FF0000FF으로 SolidColorBrush로 정의 Background 속성이 비주얼 트리의 요소 선택한 :

Visual tree

EDIT 2

Xceed가 th 렌더링에 사용하는 DataGridCheckBox 클래스의 디 컴파일

public override void OnApplyTemplate() 
{ 
    base.OnApplyTemplate(); 
    this.ChildCheckBox.Background = (Brush) new SolidColorBrush(Colors.Blue); 
} 

Xceed에 의해 기괴한 결정 임의로 파란색에 배경 색상을 설정하려면 무엇 : 전자 CheckBox와이 재정을 발견했다.

EDIT 3

사용 @JBrooks '대답은, 나는 다음과 같은 시도 :

내가 확인란을 선택하면 불행하게도, 어떤 이유로 IsSelected 재산에 세터가 호출되지 않습니다
<xcdg:Column FieldName="IsSelected" MinWidth="20" MaxWidth="20" CellEditorDisplayConditions="Always"> 
    <xcdg:Column.CellEditor> 
     <xcdg:CellEditor> 
      <xcdg:CellEditor.EditTemplate> 
       <DataTemplate> 
        <CheckBox IsChecked="{Binding ., Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"/> 
       </DataTemplate> 
      </xcdg:CellEditor.EditTemplate> 
     </xcdg:CellEditor> 
    </xcdg:Column.CellEditor> 
</xcdg:Column> 

. getter는 여러 번 호출되지만 초기 바인딩에서는 CheckBox이 올바르게 표시됩니다.

+0

이는 분명히 'DataGridCheckBox'의 알려진 버그입니다. 코드 검토를 위해 너무 많이 ... http : //wpftoolkit.cod eplex.com/workitem/20210 – NathanAldenSr

+0

"this"는 파란색 배경의 어리 석음을 의미합니다. – NathanAldenSr

+0

3 가지 질문 : 출력 창에 아무 것도 없나요? CurrentCellChanged가 캡처 한 이벤트와 비슷한 것을 가지고 있습니까? 확인란이 포커스를 잃었을 때 setter가 설정됩니까? – JBrooks

답변

1

CellContentTemplate과 CellEditor가 모두 있으므로 첫 번째 클릭은 "편집 모드로 이동"논리를 수행합니다. 아래처럼 하나만 가지고 계십시오. 이것은 일반적인 WPF DataGrid에 대한 것이지만 그리드에 대해 비슷한 것을 시도 할 수 있습니다.- 나는 4 행의 체크 박스와의 IsChecked 변경을 클릭

SelectedItem="{Binding SelectedUser, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}는 " SelectionUnit="FullRow" SelectionMode="Single"

그래서이 데이터 그리드는 당신이 원하는처럼 행동 않은 : 나는 이러한 속성을 설정 한이 데이터 그리드에 대한

<DataGridTemplateColumn Header="Active" SortMemberPath="IsActive" > 
    <DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <CheckBox IsChecked="{Binding IsActive, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" IsEnabled="{Binding IsEnabled}" Style="{StaticResource rightsCB}" /> 
     </DataTemplate> 
    </DataGridTemplateColumn.CellTemplate> 
    </DataGridTemplateColumn> 

또한 행 4를 SelectedUser를 행 4에 바인드 된 사용자로 설정하는 현재 행을 만듭니다.

+0

참조하십시오.이 작동하지 않는 것 같습니다. 내 편집을 참조하십시오. – NathanAldenSr