具有浮动控件的WPF DataGrid CellEditingTemplate

时间:2009-11-18 17:11:22

标签: wpf datagridview datagrid popup

我正在使用WPF DataGrid并希望创建自己的CellEditingTemplate。我想复制类似DatePicker的东西,它在编辑时不会替换单元格的全部内容,而只是浮动 像这样:http://i3.windowsclient.net/SiteFiles/1000/wpfsp1/wpf-35sp1-toolkit/107-2.png?cdn_id={b4d0570c}

我试过了:

<tk:DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
        <Popup AllowDrop="False" StaysOpen="False" >
            <Canvas Width="100" Height="100" Background="Aqua"/>
        </Popup>
    </DataTemplate>
</tk:DataGridTemplateColumn.CellEditingTemplate>

但这似乎没有办法。我想知道如何制作可用于细胞编辑模板的自己的控制。

谢谢, 劳尔

答案:

<tk:DataGridTemplateColumn.CellEditingTemplate>
    <DataTemplate>
        <Grid>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*" />
                <ColumnDefinition Width="Auto" />
            </Grid.ColumnDefinitions>
            <TextBlock x:Name="PART_TextBox" 
                    Grid.Row="0" Grid.Column="0" 
                    Text="{Binding User.Name}"   />
            <Popup x:Name="PART_Popup" 
                   PlacementTarget="{Binding ElementName=PART_TextBox}"
                   Placement="Bottom" 
                   StaysOpen="True"
                   AllowsTransparency="True"
                   IsOpen="True">
                <Grid>
                    <Grid.ColumnDefinitions>
                        <ColumnDefinition Width="*" />
                        <ColumnDefinition Width="Auto" />
                    </Grid.ColumnDefinitions>
                    <Grid.RowDefinitions>
                        <RowDefinition Height="Auto" />
                        <RowDefinition Height="*" />
                    </Grid.RowDefinitions>
                    <TextBox Grid.Column="0" Grid.Row="0" Text="(Enter a last, first)"/>
                    <Button Grid.Column="1" Grid.Row="0" Content="Search" />
                    <TreeView Grid.Column="0" Grid.Row="1" Grid.ColumnSpan="2" Height="200" Width="200" />
                </Grid>
            </Popup>
        </Grid>
    </DataTemplate>
</tk:DataGridTemplateColumn.CellEditingTemplate>

2 个答案:

答案 0 :(得分:2)

Popup.IsOpen属性的默认值为False,因此至少有一个原因是您没有看到弹出窗口。也许这会解决你的问题:

<DataTemplate>
  <Popup AllowDrop="False" StaysOpen="False" IsOpen="True">
    <Canvas Width="100" Height="100" Background="Aqua"/>
  </Popup>
</DataTemplate>

答案 1 :(得分:0)

在CellTemplate中放置一个按钮,该按钮将响应您的点击事件,在点击处理程序中,您可以显示一些弹出窗口,从中选择您的值。