我的客户要求我们提供一个包含DataGrid的表单,该表单是从数据库中的实际数据的角度出发的。
以下是我的数据库的(简化)外观。
│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
。< / p>
答案 0 :(得分:3)
可以使用DataGridTemplateColumn并根据您的DataContext
调整CellTemplate。
答案 1 :(得分: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
内部绑定到您的Flag属性,使用转换器转换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>