2013-02-08 1 views
1

클라이언트는 DataGrid를 사용하여 양식을 만들 것을 요청합니다.이 양식은 데이터베이스의 실제 데이터가 어떤지에 대한 관점에서 볼 수 있습니다.WPF - DataGridColumn의 특정 셀에만 CheckBox가 있습니다 ... 가능합니까?

다음은 내 데이터베이스의 (단순화 된) 모양입니다.

│id|stuff│flag│column│column│column│ 
------------------------------------ 
│35| AAA │ 0 │ etc. │ blah │ yadda│ 
│58│ BBB │ 1 │ etc. │ blah │ yadda│ 
│78│ CCC │ 0 │ etc. │ blah │ yadda│ 

다음은 내가 작성해야하는 내용입니다.

│HEADER│CODE│DATA1│DATA2│DATA3│ 
------------------------------- 
│ID | #1 │ 35│  58│  78│ 
│STUFF │ #2 │ AAA│ BBB│ CCC│ 
│FLAG │ #3 │ 0│  1│   0│ 
│COLUMN│ #4 │ etc.│ etc.│ etc.│ 
│COLUMN│ #5 │ blah│ blah│ blah│ 
│COLUMN│ #6 │yadda│yadda│yadda│ 

는 플래그 열은 0 또는 1이어야하는데, 그래서 DataGridCheckBoxColumn로 해당 열을 원하지만,이 선회 것입니다! 물론, 나는 (쉽게) 셀을 검증 과정에서 1 또는 0 만 받아들이도록 할 수는 있지만 아직 열에 지정된 셀을 만들 수 있는지 알고 싶습니다. CheckBox.

답변

1

this WPF horizontal Datagrid answer에서 <RotateTransform Angle="-90"/>을 사용하여 DataGrid를 피벗 시켰습니다. 다음은


내가 DataGridTemplateColumn를 만드는에서 모양과 당신의 깃발 속성에 바인딩 내부 CheckBoxCellTemplate을 사용하는 것, 그 후

<DataGrid.LayoutTransform> 
    <TransformGroup> 
     <RotateTransform Angle="-90"/> 
     <ScaleTransform ScaleX="1" ScaleY="-1" /> 
    </TransformGroup> 
</DataGrid.LayoutTransform> 

<DataGrid.ColumnHeaderStyle> 
    <Style TargetType="{x:Type DataGridColumnHeader}" 
      BasedOn="{StaticResource {x:Type DataGridColumnHeader}}"> 
     <Setter Property="LayoutTransform"> 
      <Setter.Value> 
       <TransformGroup> 
        <RotateTransform Angle="-90"/> 
        <ScaleTransform ScaleX="1" ScaleY="-1" /> 
       </TransformGroup> 
      </Setter.Value> 
     </Setter> 
    </Style> 
</DataGrid.ColumnHeaderStyle> 

@dimaKudr 복사 XAML의 답변입니다 , 변환기를 사용하여 0과 1을 참/거짓으로 변환하십시오.

<DataGrid> 
    <DataGrid.Columns> 
     <DataGridTemplateColumn x:Name="FlagColumn" Header="Flag" Width="25" IsReadOnly="False"> 
      <DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> 
         <CheckBox IsChecked="{Binding Flag, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged, Converter={StaticResource FlagConverter}" /> 
        </StackPanel> 
       </DataTemplate> 
      </DataGridTemplateColumn.CellTemplate> 
     </DataGridTemplateColumn> 
    </DataGrid.Columns> 
</DataGrid> 
+0

고마워요,하지만 또 다른 문제가 생길 수 있습니다 ... – Quv

+0

@Quv 어떤 종류의 문제입니까? –

+1

저는 "수평"DataGrid를 얻기 위해 RotateTransform 트릭을 조언하지 않습니다. 내가 그것을 시도했을 때, 많은 해결할 수없는 레이아웃 이슈가 생겼고 문제를 다르게 해결할 수있었습니다. – Sisyphe

관련 문제