0
Bei Verwendung des folgenden Codes ist die IP-Adressspalte nicht sortierbar (es passiert nichts, wenn Sie auf die Überschrift klicken und das Sortierereignis nicht ausgelöst wird). Wie kann ich die IP-Adressspalte sortierbar machen?WPF Datagrid, sortiert nach automatisch generierter Spalte mit IP-Adresse
C#:
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.Net;
using System.Windows;
using System.Windows.Controls;
namespace DGrid1
{
public class Item
{
public IPAddress Address { get; set; }
public string Name { get; set; }
}
public partial class MainWindow : Window
{
public ObservableCollection<Item> Collection { get; set; }
public MainWindow()
{
Collection = new ObservableCollection<Item>();
Collection.Add(new Item {Address=IPAddress.Parse("192.168.201.123"), Name="fred" });
Collection.Add(new Item { Address = IPAddress.Parse("192.168.201.241"), Name = "jim" });
InitializeComponent();
this.DataContext = this;
}
private void grid_Sorting(object sender, DataGridSortingEventArgs e)
{
System.Diagnostics.Debug.WriteLine(e.Column);
}
}
}
XAML:
<Window x:Class="DGrid1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid ItemsSource="{Binding Collection}" AutoGenerateColumns="True" x:Name="grid" Sorting="grid_Sorting"/>
</Grid>
</Window>
Dank
Thank Sie. Das funktioniert, aber warum ist die Sortierung für IP-Adressen deaktiviert, wenn die Spalten automatisch generiert werden? –
Das ist nicht * wirklich * sortierbar: schau dir meine Antwort an, ich wähle eine sortierbare Eigenschaft und behalte die ursprüngliche automatische Generierung –
@AdrianS, weil .NET nicht weiß, wie man das Klassenelement sortiert, also wenn die Spalten sind Automatisch generiert WPF nicht, wie eine sortierbare Spalte für die Adresse-Eigenschaft generiert wird. Wenn Sie das DataGridTextColumn-Tag manuell schreiben, geben Sie die Eigenschaft Adresse an. –