2009-12-29 6 views
0

Je suis novice dans WPF. J'ai une base de données wpftoolkit où j'utilise une zone de liste déroulante comme colonne datagridcombox. J'utilise une collection observable de codes pour lier la zone de liste déroulante. Ci-dessous la collection et sa classe ...Problème lors de la liaison DataGridComboBoxColumn dans Datagrid

#Region "Class & Coll" 
Public Class CodesColl 
    Inherits ObservableCollection(Of Codes) 
End Class 

Public Class Codes 

    Private pCode As String 
    Private pDescription As String 

    Public Sub New() 
     pCode = String.Empty 
     pDescription = String.Empty  
    End Sub 
#End Region 

#Region "Property" 

    Public Property fldCode() As String 
     Get 
      Return pCode 
     End Get 
     Set(ByVal value As String) 
      pCode = value 
     End Set 
    End Property 

    Public Property fldDescription() As String 
     Get 
      Return pDescription 
     End Get 
     Set(ByVal value As String) 
      pDescription = value 
     End Set 
    End Property 


#End Region 
End Class 

Maintenant, ce que je veux réaliser est que je dois lier la collection avec menu déroulant dans la grid.In ma grille j'ai deux colonnes dans la première colonne, je dois afficher le code (fldCode), et sur la sélection du code, la colonne suivante de la même ligne sera remplie avec sa description (fldDescription).

Mon Xaml est quelque chose comme ceci:

<wpfkit:DataGrid Margin="3" Style="{DynamicResource SimpleDataGrid}" FontWeight="Normal" 
MaxHeight="100" ItemsSource="{Binding Source={StaticResource odpExistingCodesColl}}" 
AutoGenerateColumns="False" Name="dgCodes" VerticalScrollBarVisibility="Visible" >         
<wpfkit:DataGrid.Columns> 
    <wpfkit:DataGridTemplateColumn IsReadOnly="True"> 
     <wpfkit:DataGridTemplateColumn.CellTemplate>            
      <DataTemplate>                
       <Image Style="{DynamicResource SimpleImageDelete}"/> 
      </DataTemplate> 
     </wpfkit:DataGridTemplateColumn.CellTemplate> 
    </wpfkit:DataGridTemplateColumn> 
    <wpfkit:DataGridComboBoxColumn Header="Code" 
    DisplayMemberPath="fldCode" 
    SelectedValueBinding="{Binding fldCodes.fldCode}" 
    SelectedValuePath="fldCode"  
    SelectedItemBinding="{Binding fldCodeList}"           
    Width="100" x:Name="cbTCodes" > 
    <wpfkit:DataGridComboBoxColumn.ElementStyle> 
     <Style TargetType="ComboBox"> 
      <Setter Property="IsSynchronizedWithCurrentItem" Value="False" /> 
      <Setter Property ="ItemsSource" Value="{Binding Path=odpCodesColl}"/> 

     </Style> 
     </wpfkit:DataGridComboBoxColumn.ElementStyle> 
     <wpfkit:DataGridComboBoxColumn.EditingElementStyle > 
      <Style TargetType="ComboBox"> 
       <Setter Property ="ItemsSource" Value="{Binding Path=odpCodesColl}"/> 
       <Setter Property ="IsDropDownOpen" Value="True"/> 
      </Style> 
     </wpfkit:DataGridComboBoxColumn.EditingElementStyle> 
    </wpfkit:DataGridComboBoxColumn>               
    <wpfkit:DataGridTextColumn Width="375" Header="Description" x:Name="tbTCodeDescription" /> 
</wpfkit:DataGrid.Columns> 
</wpfkit:DataGrid> 

odpExistingCodesColl est une autre collection ici à travers laquelle je suis lient toute la grille et est utilisée pour envoyer le code et sa description à mais je fais face à des problèmes suivants

  1. Impossible d'afficher les codes dans la liste déroulante.
  2. D'une manière ou d'une autre j'ai réussi à le faire mais il disparaît après avoir perdu le focus de la combobox.
  3. Impossible de récupérer la description de son changement de sélection, car je suis incapable de trouver l'événement aussi.

Vous les gars est demandé de me aider dès que possible .. toute aide sera très appréciée .. Merci à l'avance Amit Ranjan

Répondre

1

Vous pouvez vérifier Vincent's blog pour des informations détaillées sur la façon de travailler avec Wpf DataGrid (DataGridComboBoxColumn aussi).

+0

J'ai déjà visité VinSibal mais ce n'était pas très pertinent. Anywayz merci pour l'aide –

Questions connexes