2010-10-12 4 views
1

Je suis nouveau dans wpf. J'ai une forme DataGrid wpftoolkit et je dois montrer le bouton que dans le modèle lorsque la ligne est sélectionnée et que l'enregistrement est dernier (nouvel élément d'enregistrement)WPF se lie à datagrid à partir du modèle

<dg:DataGrid AutoGenerateColumns="False" DockPanel.Dock="Top" 
       ItemsSource="{Binding Source={StaticResource Entries}}" 
       Name="dataGrid" > 

       <dg:DataGrid.Columns> 
        <dg:DataGridTextColumn Header="Term" Width="2*" Binding="{Binding Path=Term}"/> 
        <dg:DataGridTextColumn Header="Definition" Width="5*" Binding="{Binding Path=Definition}"/> 

        <dg:DataGridTemplateColumn Header=""> 
         <dg:DataGridTemplateColumn.CellTemplate> 
          <DataTemplate> 
           <Button Click="btnRemove_Click">Remove</Button> 
          </DataTemplate> 
         </dg:DataGridTemplateColumn.CellTemplate> 
        </dg:DataGridTemplateColumn> 

       </dg:DataGrid.Columns> 
      </dg:DataGrid> 

Comment lier la propriété de visibilité avec la grille de données?

ma solution non complètement ce qui désactive le bouton lorsque la ligne est pas sélectionnée:

<dg:DataGridTemplateColumn > 
         <dg:DataGridTemplateColumn.CellTemplate> 
          <DataTemplate> 
           <Button Content="Remove" Click="btnRemove_Click" > 
            <Button.Style> 
             <Style TargetType="{x:Type Button}" > 
              <Setter Property="Visibility" Value="Hidden" /> 
              <Style.Triggers> 
               <DataTrigger Binding="{Binding RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type dg:DataGridRow}}, Path=IsSelected}" Value="True"> 
                <Setter Property="Visibility" Value="Visible" /> 
               </DataTrigger> 
              </Style.Triggers> 
             </Style> 
            </Button.Style> 
           </Button> 
          </DataTemplate> 
         </dg:DataGridTemplateColumn.CellTemplate> 
        </dg:DataGridTemplateColumn> 

Répondre

0

Une solution consiste à écrire un ValueConverter pour la propriété de visibilité qui est binded au DataRow. Sur le ValueConverter, vérifiez s'il s'agit d'une nouvelle ligne, puis définissez la propriété Visibilité pour qu'elle soit visible.

+0

Comment puis-je vérifier si cette ligne est nouvelle. Je n'ai pas trouvé cette propriété qui indique que cette ligne est nouvelle. Si je le savais, j'ai écrit un multi-déclencheur. – 2xMax

+0

Vous pouvez utiliser la propriété DataRow.RowState pour vérifier si DataRowState est DataRowState.Added. – Viv