2011-06-03 5 views
0

J'ai fait une coutume DataGridColumn (DGNumericColumn) avec un élément de montage de type NumericUpDown (extrait de la boîte à outils WPF Extended)WPF bases DataGrid

<k:DataGrid ItemsSource="{Binding Profiles}" 
      SelectedIndex="{Binding SelectedProfile}"> 
    <k:DataGrid.Columns> 
    <k:DGNumericColumn Binding="{Binding Depth}"/> 
    . 
    . 
    . 

Ce que je veux est (ce que tout le monde veut de DataGrid :)), est, par exemple, mettre à jour la propriété Depth dans le ViewModel, d'une manière similaire à ce qui se passe lorsque le contrôle NumericUpDown n'est pas "à l'intérieur" d'un DataGrid, par ex. lorsque la valeur du contrôle est modifiée et non seulement lorsque la cellule change (événement CellEditEnding). Je pensais que ce qui suit pourrait fonctionner, mais ce n'est pas le cas.

<k:DataGrid ItemsSource="{Binding Profiles}" 
      SelectedIndex="{Binding SelectedProfile}"> 
    <k:DataGrid.Columns> 
    <k:DGNumericColumn> 
     <k:DGNumericColumn.EditingElementStyle> 
     <Style TargetType="j:NumericUpDown"> 
      <Setter Property="Value" Value="{Binding Depth}"/> 
      <Setter Property="Maximum" Value="10.0"/> 
     </Style> 
     </k:DGNumericColumn.EditingElementStyle>   
    </k:DGNumericColumn> 
    . 
    . 
    . 

Gardez à l'esprit que le seuil maximal dans le style fonctionne, et aucun problème de liaison sont signalés dans la zone de sortie de Visual Studio. Comment résoudre le problème de changement de propriété uniquement lorsque la cellule perd son focus?

+1

Avez-vous un problème? –

+2

S'il vous plaît poster votre réponse comme une réponse, de sorte qu'il peut être upvoted et accepté. Sinon, cette question semblera sans réponse. :) –

+0

@djacobson ok, je n'ai pas les informations d'identification pour écrire ma propre réponse assez rapidement. –

Répondre

0

Ok, résolu.

<k:DataGrid ItemsSource="{Binding Profiles}" 
      SelectedIndex="{Binding SelectedProfile}"> 
    <k:DataGrid.Columns> 
    <k:DataGridTemplateColumn> 
     <k:DataGridTemplateColumn.CellTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Depth}"/> 
     </DataTemplate> 
     </k:DataGridTemplateColumn.CellTemplate> 
     <k:DataGridTemplateColumn.CellEditingTemplate> 
     <DataTemplate> 
      <l:NumericUpDown Value="{Binding Depth}"/> 
     </DataTemplate> 
     </k:DataGridTemplateColumn.CellEditingTemplate> 
    </k:DataGridTemplateColumn> 
    . 
    . 
    .