2010-11-19 6 views
0

J'ai un DataGrid qui est lié à une liste avec deux propriétés.Liaison entre les deux colonnes dans le DataGrid

La première colonne du DataGrid est DataGridTemplateColumn et son contenu est ComboBox.

La deuxième colonne du DataGrid est DataGridTextColumn et elle est liée à un convertisseur.

Chaque fois que je change la valeur de la zone de liste déroulante dans la première colonne, le second convertisseur de colonne doit être déclenché. Donc, basé sur un calcul dans le convertisseur, je peux retourner la valeur à la deuxième colonne

comment faire cela?

Répondre

0

Vous pouvez acheminer cette valeur via votre source reliée, lier l'élément sélectionné de la zone de liste déroulante à vos données liées, puis lier l'objet sélectionné à la colonne 2 à l'aide du convertisseur. Partager l'élément sélectionné entre deux colonnes et pour la deuxième colonne utiliser le convertisseur dans la liaison, afin qu'il soit déclenché.

Correction d'erreur de copier coller dans la colonne 2 de liaison,

Quelque chose comme ça,

Presenter/ViewModel 
class DataSource : INotifyPropertyChanged { 
    // raise PropertyChanged when required 
    public ObservableCollection<string> Columns1Values {get;set;} 
    // raise PropertyChanged when required 
    public string SelectedColumn1Value {get; set;} 
} 

Voir

<dg:DataGrid 
    Name="sampleDG" 
    ItemsSource={Binding DataSourceObject}> 
    <dg:DataGridWidget.Columns> 
     <dg:DataGridTemplateColumn 
      Header="Column 1"> 
      <datagrid:DataGridTemplateColumn.CellTemplate> 
       <DataTemplate> 
        <Label Content="{Binding Path=SelectedColumn1Value, Mode=TwoWay}"/> 
       </DataTemplate> 
      </datagrid:DataGridTemplateColumn.CellTemplate> 
      <datagrid:DataGridTemplateColumn.CellEditingTemplate> 
       <DataTemplate> 
        <ComboBox 
         ItemsSource="{Binding Path=Column1, Mode=TwoWay}" 
         SelectedItem="{Binding Path=SelectedColumn1Value, Mode=TwoWay}" 
        /> 
       </DataTemplate> 
      </datagrid:DataGridTemplateColumn.CellEditingTemplate> 
     </dg:DataGridTemplateColumn> 
     <dg:DataGridTextColumn 
      Header="Column 2" 
      Binding="{Binding Path=SelectedColumn1Value, Converter={StaticResource selectedConverter}, Mode=TwoWay}}"> 
     </dg:DataGridTextColumn> 
    </dg:DataGridWidget.Columns> 
</dg:DataGrid> 
+0

Mais comment le convertisseur se déclenchera à chaque fois que lorsque vous modifiez le combobox ? Quel est ce chemin de liaison "Column" dans DataGridTextColumn? – ksvimal

+0

Désolé mon erreur (erreur de copier coller), la colonne 2 doit être liée à SelectedColumn1Value car c'est le membre que vous devez partager entre les colonnes et donc quand la liaison Column1 le met à jour, sa modification va déclencher votre convertisseur . Pour la colonne 2, le mode de liaison peut être OneWay si vous n'avez pas l'intention de modifier la sélection de la colonne 2 à la colonne 1. – whoisthis

+0

Était-ce utile? – whoisthis

Questions connexes