2011-01-03 4 views
0

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

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 > 

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

ответ

2

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

+0

Я попытался обертывание LB в Popup, но не работал, как ничто, как показано на рисунке. Может, мне нужно что-то настроить? Проверьте свою ссылку. Благодарю. EDIT: настройка свойства IsOpen на true сделала это :) Я хочу привязать IsOpen к видимости Listbox, если это возможно: p – Machinarius

+0

Готово. Спасибо многому человеку, теперь мне нужно расшифровать, почему строка становится доступной только для чтения, когда я назначаю автоматически заполненный элемент коллекции связанных с ItemsSource: S – Machinarius

Смежные вопросы