2013-02-08 3 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.


Ниже скопированный XAML ответ @dimaKudr

<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> 

После этого, я бы взглянуть на создание DataGridTemplateColumn и использовать CellTemplate с CheckBox внутри привязки к вашей собственности Флага , используя конвертер для преобразования 0 и 1 в true/false

<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

Я лично не советую трюк RotateTransform получить «Горизонтальный» DataGrid. Когда я попробовал это, он принес много неразрешимых проблем с макетами, и я решил решить проблему по-разному. – Sisyphe

 Смежные вопросы

  • Нет связанных вопросов^_^