Le code WPF suivant affiche le contenu de FirstName et ZipCode dans le WPF Toolkit DataGrid.Comment manipuler les données de cellule affichées dans WPF Toolkit DataGrid lors de l'exécution?
Cependant, je ne veux pas simplement afficher les données telles quelles mais légèrement modifié, par ex. Je pourrais vouloir afficher tous les codes postaux à afficher avec un "-0000" à la fin, ou je peux vouloir montrer "n/a" si une cellule est vide. Je ne pouvais trouver que CopyingCellClipboardContent qui ne semble pas faire ce que je veux.
Je pense que je pourrais avoir besoin d'un Converter mais je ne suis pas sûr de savoir comment faire à ce sujet dans cet exemple.
Comment puis-je manipuler le contenu de la cellule des cellules DataGrid lors de l'exécution?
XAML:
<Window x:Class="TestControl3423.Window2"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:tk="http://schemas.microsoft.com/wpf/2008/toolkit"
Title="Window2" Height="300" Width="500">
<StackPanel>
<tk:DataGrid x:Name="dataGrid"
Margin="0 0 0 10"
AutoGenerateColumns="False"
CanUserAddRows="False"
HeadersVisibility="Column"
MaxHeight="400"
IsReadOnly="True"
Background="#fff"
ColumnWidth="SizeToHeader">
</tk:DataGrid>
</StackPanel>
</Window>
code Derrière:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Windows;
using System.Windows.Data;
using System.Windows.Documents;
using Microsoft.Windows.Controls;
namespace TestControl3423
{
public partial class Window2 : Window
{
public Window2()
{
InitializeComponent();
dataGrid.ItemsSource = Customer.GetCustomers();
dataGrid.Columns.Clear();
DataGridTextColumn dgtc1 = new DataGridTextColumn();
dgtc1.Header = "First Name";
dgtc1.Binding = new Binding("FirstName");
dgtc1.Width = new DataGridLength(1, DataGridLengthUnitType.Auto);
dataGrid.Columns.Add(dgtc1);
DataGridTextColumn dgtc2 = new DataGridTextColumn();
dgtc2.Header = "Zip Code";
dgtc2.Binding = new Binding("ZipCode");
dgtc2.Width = new DataGridLength(1, DataGridLengthUnitType.Auto);
dgtc2.CopyingCellClipboardContent += new EventHandler<DataGridCellClipboardEventArgs>(dgtc2_CopyingCellClipboardContent);
dataGrid.Columns.Add(dgtc2);
}
void dgtc2_CopyingCellClipboardContent(object sender, DataGridCellClipboardEventArgs e)
{
DataGridTextColumn dgtc = sender as DataGridTextColumn;
dgtc.SetValue(dgtc.GetValue() + "-0000"); //ERROR
}
}
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Street { get; set; }
public string Location { get; set; }
public string ZipCode { get; set; }
public static List<Customer> GetCustomers()
{
List<Customer> customers = new List<Customer>();
customers.Add(new Customer { FirstName = "Jim", LastName = "Jones", ZipCode = "23434" });
customers.Add(new Customer { FirstName = "Joe", LastName = "Adams", ZipCode = "12312" });
customers.Add(new Customer { FirstName = "Jake", LastName = "Johnson", ZipCode = "23111" });
customers.Add(new Customer { FirstName = "Angie", LastName = "Reckar", ZipCode = "54343" });
customers.Add(new Customer { FirstName = "Jean", LastName = "Anderson", ZipCode = "16623" });
return customers;
}
}
}
qui était exactement ce que je cherchais, merci! –