DataTemplate переполняет ячейку сетки данных - PullRequest
0 голосов
/ 03 января 2011

У меня небольшая проблема с датагридом. Я пытаюсь реализовать автоматическое заполнение текстового поля [Как описано здесь ] в DataGridCellTemplate. Пока он работает отлично, единственная проблема в том, что он переполняет назначенное пространство столбца, поэтому он становится намного больше. Я не хочу, чтобы это происходило, иными словами, я хочу, чтобы список для автозаполненных записей «плавал» над сеткой данных, поэтому он не переполняет назначенное пространство ячейки. [Я знаю, что это возможно, потому что я видел подобные вещи раньше, поэтому я думаю, что это выполнимо].

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 >

Заранее спасибо:)

1 Ответ

2 голосов
/ 03 января 2011

Вы можете использовать Popup, чтобы избежать увеличения размера ячейки, когда видны завершающие элементы.Вот учебник:

...