2010-05-25 9 views
2

Par défaut, le langage de données WPF apparaît sous la forme d'une étiquette et entre dans un état d'édition lors d'un clic. Est-il possible de modifier la colonne afin que la zone de texte soit toujours visible (au lieu de dépendre de l'événement click)? Merci d'avance, JPWPF datagridtextcolumn - affiche toujours la zone de texte

Répondre

1

J'ai mis à jour ma réponse en fonction de votre clarification dans votre commentaire. Vous pouvez définir vous-même le modèle pour les cellules. Voici un exemple où la colonne d'âge utilise des blocs de texte.

XAML:

<Window x:Class="GridTest.Window1" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:Controls="clr-namespace:Microsoft.Windows.Controls;assembly=WPFToolkit" 
    Height="300" Width="300"> 
    <StackPanel> 
     <Controls:DataGrid Name="dataGrid" AutoGenerateColumns="False" > 
      <Controls:DataGrid.Columns> 
       <Controls:DataGridTextColumn 
        Header="Name" 
        Binding="{Binding Path=Name}" /> 
       <Controls:DataGridTemplateColumn Header="Age"> 
        <Controls:DataGridTemplateColumn.CellTemplate> 
         <DataTemplate> 
          <TextBox Text="{Binding Path=Age}" /> 
         </DataTemplate> 
        </Controls:DataGridTemplateColumn.CellTemplate> 
        <Controls:DataGridTemplateColumn.CellEditingTemplate> 
         <DataTemplate> 
          <TextBox Text="{Binding Path=Age}" /> 
         </DataTemplate> 
        </Controls:DataGridTemplateColumn.CellEditingTemplate> 
       </Controls:DataGridTemplateColumn> 
      </Controls:DataGrid.Columns> 
     </Controls:DataGrid> 
    </StackPanel> 
</Window> 

code derrière:

using System; 
using System.Collections.Generic; 
using System.Windows; 

namespace GridTest 
{ 
    public partial class Window1 : Window 
    { 
     public Window1() 
     { 
      InitializeComponent(); 

      dataGrid.ItemsSource = new List<Person>(
       new Person[] 
       { 
        new Person("Bob", 30), 
        new Person("Sally", 24), 
        new Person("Joe", 17) 
       }); 
     } 
    } 

    public class Person 
    { 
     public String Name { get; set; } 
     public int Age { get; set; } 

     public Person(String name, int age) 
     { 
      Name = name; 
      Age = age; 
     } 
    } 
} 
+1

Non, je dis que le DataGridTextColumn est multistate. Le premier état est label. Cliquer sur l'étiquette permet la saisie de données. Perdre la mise au point le fait revenir à l'étiquette. Vous ne voyez que la zone de texte elle-même lors de la modification d'une ligne particulière - je voudrais toujours voir la texbox –

Questions connexes