0

行が動的に追加されるWPFデータグリッドを使用しています。選択したデータグリッドセルに、ラベル、テキストボックス、ボタンなどのwpfコントロールを動的に作成できます。

データグリッドセルのコンテンツコントロールをキャンバスに表示する必要があります。つまり、行と列のコントロールは、キャンバス上に表形式で表示する必要があります。

誰かがこれがどのように行われるか知っていますか?

4

1 に答える 1

1

何を求めているのか正確にはわかりませんが、 a を使用しDataGridTemplateColumnて、アイテムを として描画する必要があることを指定できますCanvas

<DataGridTemplateColumn Header="ColumnHeader">
    <DataGridTemplateColumn.CellTemplate>
         <DataTemplate>
            <Canvas>
                <Label ... />
                <TextBox ... />
                <Button ... />
            </Canvas>
         </DataTemplate>
    </DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>

Canvasの外側に関連のないアイテムを配置しようとしている場合DataGrid、それは別の話DataGridです。UI コンポーネントには階層があり、その階層の外にアイテムを簡単に配置することはできないからです。

その場合は、に切り替えることをお勧めしますItemsControl

<ItemsControl ItemsSource="{Binding MyCollection}">
    <ItemsControl.ItemsPanel>
        <ItemsPanelTemplate>
            <Canvas />
        </ItemsPanelTemplate>
    </ItemsControl.ItemsPanel>

    <ItemsControl.ItemContainerStyle>
        <Style>
            <Setter Property="Canvas.Left" Value="{Binding X}" />
            <Setter Property="Canvas.Top" Value="{Binding Y}" />
        </Style>
    </ItemsControl.ItemContainerStyle>
</ItemsControl>
于 2012-07-20T15:13:08.930 に答える