【问题标题】:DataTemplate overflows datagrid cellDataTemplate 溢出数据网格单元格
【发布时间】:2011-01-03 01:22:44
【问题描述】:

我对 Datagrid 有一点问题。我正在尝试在 DataGridCellTemplate 中实现一个自动完成文本框 [如 here 所述]。到目前为止它工作得很好,唯一的问题是它溢出了分配的列空间,所以它变得更大了。我不希望这种情况发生,换句话说,我希望自动完成条目的列表框“浮动”在数据网格上,因此它不会溢出单元格的分配空间。 [我知道这是可能的,因为我以前见过类似的事情,所以我认为这是可行的]。

XAML:

<Window x:Class="LDary.Compras"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="Compras" Height="300" Width="300" Name="WinCompras">
<Window.Resources>
        <CollectionViewSource Source="{Binding ElementName=WinCompras, Path=AutoCSource}" x:Key="Source" Filter="CollectionViewSource_Filter" />
</Window.Resources>
<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto" />
        <RowDefinition Height="*" />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <TextBlock Text="Articulos de la compra:" Padding="0,2"/>
    <DataGrid Grid.Row="1" AutoGenerateColumns="False" x:Name="Lista" CanUserAddRows="True" ItemsSource="{Binding ElementName=WinCompras, Path=CompraActual}">
        <DataGrid.Columns>
            <DataGridTemplateColumn Header="Nombre" x:Name="Nombre">
                <DataGridTemplateColumn.CellTemplate>
                    <DataTemplate>
                        <TextBlock Text="{Binding Nombre}"/>
                    </DataTemplate>
                </DataGridTemplateColumn.CellTemplate>
                <DataGridTemplateColumn.CellEditingTemplate>
                    <DataTemplate>
                        <StackPanel>
                            <TextBox Text="{Binding Nombre}" TextChanged="TextBox_TextChanged" Loaded="TextBox_Loaded" Unloaded="TextBox_Unloaded"/>
                            <ListBox Visibility="Hidden" ItemsSource="{Binding Source={StaticResource Source}}" 
                                     Focusable="False" Loaded="ListBox_Loaded" Unloaded="ListBox_Unloaded">
                                <ListBox.ItemTemplate>
                                    <DataTemplate>
                                        <TextBlock Text="{Binding Nombre}"/>
                                    </DataTemplate>
                                </ListBox.ItemTemplate>
                            </ListBox>
                        </StackPanel>
                    </DataTemplate>
                </DataGridTemplateColumn.CellEditingTemplate>
            </DataGridTemplateColumn>
        </DataGrid.Columns>
    </DataGrid>
    <Button Name="BtnGuardar" Content="Guardar" Padding="0,5" Grid.Row="2" />
    <Button Name="BtnReset" Content="Reiniciar" Padding="0,5" Grid.Row="3" />
</Grid>
</Window >

提前致谢:)

【问题讨论】:

    标签: wpf datagrid datatemplate


    【解决方案1】:

    您可以使用Popup 来避免在完成可见时增加单元格的大小。这是一个教程:

    【讨论】:

    • 我尝试将 LB 包装在弹出窗口中,但如图所示没有任何效果。也许我需要配置一些东西?生病检查你的链接。谢谢。编辑:将它的 IsOpen 属性设置为 true 做到了:) 如果可能的话,我想将 IsOpen 绑定到 Listbox 可见性:p
    • 完成。非常感谢,现在我需要解释为什么当我将自动完成的项目分配给 ItemsSource 绑定集合时该行变为只读:S
    猜你喜欢
    • 2022-11-11
    • 1970-01-01
    • 2020-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多