2
我似乎無法理解這一點。WPF Datagrid排序索引問題
我創建的代碼示例演示我的問題,希望有人能告訴我答案...
的問題是,一旦數據網格進行排序,標記ID和名稱不再是選擇匹配的DataGrid項目。
我想你並欣賞...幫助
感謝
傑夫
<Window x:Class="dgSortTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="dgSortTest" Height="253" Width="403" IsEnabled="True">
<Grid>
<DataGrid AutoGenerateColumns="False" Height="212" HorizontalAlignment="Left" Margin="12,2,0,0" Name="dataGrid1" VerticalAlignment="Top" Width="200" SelectionChanged="dataGrid1_SelectionChanged" RowHeaderWidth="0" AreRowDetailsFrozen="False" CanUserAddRows="True" CanUserDeleteRows="True" IsReadOnly="True">
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID}"/>
<DataGridTextColumn Header="Name" Binding="{Binding Name}"/>
</DataGrid.Columns>
</DataGrid>
<Label Content="Index: " Name="lblIndex" Height="28" HorizontalAlignment="Left" Margin="228,12,0,0" VerticalAlignment="Top" Width="92" />
<Label Content="ID:" Name="lblID" Height="28" HorizontalAlignment="Left" Margin="228,46,0,0" VerticalAlignment="Top" Width="141" IsEnabled="True" />
<Label Content="Name: " Name="lblName" Height="28" HorizontalAlignment="Left" Margin="228,80,0,0" VerticalAlignment="Top" Width="141" />
</Grid>
</Window>
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
namespace dgSortTest
{
public partial class MainWindow : Window
{
List<Person> people = new List<Person>();
public MainWindow()
{
InitializeComponent();
people.Add(new Person() { ID = 0, Name = "Jeff" });
people.Add(new Person() { ID = 1, Name = "Tom" });
people.Add(new Person() { ID = 2, Name = "Andy" });
people.Add(new Person() { ID = 3, Name = "Ken" });
people.Add(new Person() { ID = 4, Name = "Zack" });
people.Add(new Person() { ID = 5, Name = "Emily" });
people.Add(new Person() { ID = 6, Name = "Courtney" });
people.Add(new Person() { ID = 7, Name = "Adam" });
people.Add(new Person() { ID = 8, Name = "Brenda" });
people.Add(new Person() { ID = 9, Name = "Bill" });
people.Add(new Person() { ID = 10, Name = "Joan" });
dataGrid1.ItemsSource = from Person in people select Person;
}
private void dataGrid1_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
int index = dataGrid1.SelectedIndex;
lblIndex.Content = "Index: " + index.ToString();
lblID.Content = "ID: " + people[index].ID;
lblName.Content = "Name: " + people[index].Name;
}
}
public class Person
{
public int ID { get; set; }
public string Name { get; set; }
}
}
非常感謝!我必須說,第一個建議更容易理解,因爲TBO,我還不知道xaml正在發生什麼。我可以用它創建UI,但是要做大部分的代碼,沒有代碼,讓我感到困惑。我相信隨着時間的推移,我會得到它。 – 2010-11-08 13:38:23