1

我的客户要求我们有一个带有 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│

flag 列应该是 0 或 1,所以我希望该列是 a DataGridCheckBoxColumn,但它是旋转的!当然,我可以(轻松地)让单元格在验证过程中只接受 1 或 0,但是,我仍然想知道是否可以让列中的指定单元格具有CheckBox.

4

2 回答 2

3

通过使用DataGridTemplateColumn根据您的DataContext.

于 2013-02-08T16:07:00.827 回答
1

我会看看这个 WPF 水平 Datagrid 答案,利用<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>

之后,我会看看创建 aDataGridTemplateColumn并使用CellTemplate带有CheckBox内部绑定到您的 Flag 属性的 a,使用 Converter 将 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>
于 2013-02-08T16:33:46.773 回答