【问题标题】:WPF DataGrid CellEditingTemplate with floating control带有浮动控件的 WPF DataGrid CellEditingTemplate
【发布时间】:2009-11-18 17:11:22
【问题描述】:

我正在使用 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>

【问题讨论】:

    标签: wpf datagridview datagrid popup


    【解决方案1】:

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

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

    【讨论】:

    • 就是这样。我还必须有 StaysOpen="True" 谢谢!
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-01-15
      • 2011-12-04
      • 1970-01-01
      • 2011-10-19
      • 2013-04-29
      • 1970-01-01
      • 1970-01-01
      • 2015-08-01
      • 1970-01-01
      相关资源
      最近更新 更多