2011-01-03 8 views
0

私はDatagridに少し問題があります。私は、DataGridCellTemplateに[hereと記載されている]自動補完テキストボックスを実装しようとしています。これまでのところ完璧に動作していますが、割り当てられた列スペースをオーバーフローさせるだけで大​​きな問題になります。私はこれが起こることを望んでいない、言い換えれば、私は、セルの割り当てられたスペースをオーバーフローしないように、データグリッド上に "フロート"する自動補完エントリのリストボックスが必要です。 [私は前に似たようなことを見たので、私は可能であることを知っているので、これは可能だと思う]。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をラップしようとしたが示すように、それは何もないような作業をdidntの。たぶん私は何かを構成する必要がありましたか?あなたのリンクを確認してください。ありがとう。編集:IsOpenプロパティをtrueに設定しました:)可能であれば、IsOpenをリストボックスの可視性にバインドしたいと考えています:p – Machinarius

+0

完了しました。ありがとう、多くの人、今なぜ私はItemsSourceバインドされたコレクションにオートコンプリートアイテムを割り当てると、行が読み取り専用になるのかを解読する必要があります:S – Machinarius

関連する問題