将控件放在Wpf Datagrid上的特定位置

时间:2018-12-26 05:02:24

标签: c# wpf wpfdatagrid

我试图将按钮,形状或任何控件或UserControl放置在Datagrid上作为覆盖。我想要的是将其放置在特定的行和列索引处。例如,我想将其放置在第2行,它应该覆盖2列,第3列和第4列。

<Canvas Grid.Row="1" Name="CanvasContainer" Background="CadetBlue" AllowDrop="True" Drop="Canvas_Drop">
            <DataGrid Name="DataGrid" AllowDrop="True" 
                      Height="{Binding ActualHeight, ElementName=CanvasConstatainer}"
                      Width="{Binding ActualWidth, ElementName=CanvasContainer}">
            </DataGrid>
            <Button Visibility="Visible" Name="LayerBtn" Width="100" Height="30"
                    PreviewMouseLeftButtonUp="btn_PreviewMouseLeftButtonUp"
                    PreviewMouseMove="btn_PreviewMouseMove"
                    MouseMove="btn_MouseMove"
                    PreviewMouseLeftButtonDown="btn_PreviewMouseLeftButtonDown" Canvas.Left="111" Canvas.Top="69">
                    Layer
            </Button>    
 </Canvas>  

我只是写了这样的代码。看到我正在使用按钮作为覆盖,但是它可以是任何控件或usercontrol。我想做如下图所示的操作。

enter image description here

1 个答案:

答案 0 :(得分:0)

我认为这是不可能的。使用DataGrid时,必须定义所使用的列类型。通常在通过DataTAble传递数据时,默认情况下会放置DataGridTextBoxColumn,它会考虑所有Text。

但是您可以定义其他类型的列,例如,DataGridComboBox列或DataGridCheckboxColumn,它们可以让您至少部分地想要在此处完成

尽管如此,您可以定义自己的列,该列可以完全满足您的要求。但这不是一件容易的事。