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│

フラグ列は 0 か 1 のはずなので、その列を にしたかった DataGridCheckBoxColumnのですが、ピボットされています! もちろん、検証プロセスでセルに 1 または 0 のみを受け入れるようにすることは (簡単に) できますが、列内の指定されたセルにCheckBox.

4

2 に答える 2

3

DataGridTemplateColumnを使用し、必要に応じてCellTemplateを調整することで可能DataContextです。

于 2013-02-08T16:07:00.827 に答える
1

DataGrid をピボットするために利用して、この WPF 水平 Datagrid の回答を見てみたいと思います。<RotateTransform Angle="-90"/>


以下は、コピーされた 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>

その後、 を作成し、内部で Flag プロパティにバインドしてDataGridTemplateColumn使用し、 Converter を使用して 0 と 1 を true/false に変換する方法を見ていきます。CellTemplateCheckBox

<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 に答える