2010-06-04 5 views
1

Je veux activer/désactiver une fonction DataGridTextColumn si oui ou non la SelectedValue de son voisin DataGridComboBoxColumn == « Autre »colonne Bind WPF DataGrid à un autre

Je peux faire ce travail dans une zone de liste ci-dessous, mais ne fonctionnera pas dans mon environnement DataGrid car la colonne DataGridComboBox n'a pas de propriété de nom.

<ListBox Grid.Row="1" Grid.Column="1" ItemsSource="{Binding Source={StaticResource CustomData}}"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel Orientation="Horizontal"> 
       <ComboBox Name="operatorComboBox" SelectedValue="{Binding OperatorId}" ItemsSource="{Binding Source={StaticResource Operator}}" SelectedValuePath="Id" DisplayMemberPath="Name"></ComboBox> 
       <TextBox Text="{Binding Name}" Visibility="{Binding Path=SelectedValue, ElementName=operatorComboBox, Converter={StaticResource intToVis}}"></TextBox> 
      </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Est-ce que cela peut être fait avec un DataGrid?

(Je sais que j'ai changé la visibilité dans l'exemple ListBox, mais ce ne est pas un bond en avant de changer cela à permis. (Cacher toute évidence une colonne entière serait une mauvaise chose dans un DataGrid bon)

this question est assez similaire à ce que je demande, je ne peux pas simplement pour scinder la solution dans ce que je suis après

Répondre

1

La façon la plus simple que je peux penser à la résolution de ce problème est en fait de créer un DataGridTemplateColumn au lieu d'un DataGridTextBoxColumn crée ensuite une zone de texte à l'intérieur du modèle.Pour désactiver/activer la zone de texte, liez la propriété IsEnabled à la propriété OperatorId sous-jacente. lueConverter vérifie si la valeur OperatorId == 'Other' et renvoie cette valeur.

Questions connexes