以下是我如何定义DataGrid
<toolkit:DataGrid
Height="{Binding ElementName=parentCanvas, Path=ActualHeight}"
Width="{Binding ElementName=parentCanvas, Path=ActualWidth}"
SelectionMode="Single"
ScrollViewer.VerticalScrollBarVisibility="Auto"
SelectedIndex="{Binding CurrentSelectedIdx}"
ItemsSource="{Binding Path=GameHostDataList, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}"
AutoGenerateColumns="False"
x:Name="gamehostsDataGrid"
IsReadOnly="True"
Visibility="{Binding Path=GhListVisibility}">
<toolkit:DataGrid.Columns>
<toolkit:DataGridTextColumn Binding="{Binding FacilityId}" Header="Facility ID" MinWidth="45" Width="45*" IsReadOnly="True" SortMemberPath="FacilityId"/>
<toolkit:DataGridTextColumn Binding="{Binding FacilityName}" Header="Facility Name" MinWidth="100" Width="110*" IsReadOnly="True" SortMemberPath="FacilityName"/>
<toolkit:DataGridTextColumn Binding="{Binding GameHostIp}" Header="GH IP" MinWidth="70" Width="75*" IsReadOnly="True" SortMemberPath="GameHostIp"/>
<toolkit:DataGridTextColumn Binding="{Binding Status}" Header="Status" MinWidth="80" Width="85*" IsReadOnly="True" SortMemberPath="Status"/>
<toolkit:DataGridTemplateColumn Header="" Width="Auto" MinWidth="24">
<toolkit:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Margin="0" HorizontalAlignment="Center" VerticalAlignment="Center" ToolTip="Delete"
Command="{StaticResource deleteGhCommand}" Focusable="False"
Width="24" Height="24">
<Image Source="pack://application:,,,/DesktopShell;component/Resources/Buttons/Aha-Soft/No-entry.png" />
</Button>
</DataTemplate>
</toolkit:DataGridTemplateColumn.CellTemplate>
</toolkit:DataGridTemplateColumn>
</toolkit:DataGrid.Columns>
<e:Interaction.Triggers>
<e:EventTrigger EventName ="SelectionChanged">
<b:CommandAction Command="{Binding DisplayGhCommand}"/>
</e:EventTrigger>
</e:Interaction.Triggers>
</toolkit:DataGrid>
数据来源如下:
ObservableCollectionEx<GamehostDataModel> gameHostDataList = new ObservableCollectionEx<GamehostDataModel>();
通过单击列标题对网格上的列进行排序后,条目看起来已排序,但是当我单击第一行时,显示与未排序列表对应的数据。我只是想知道itemsource的可视化表示与实际的itemsource数据之间的相关性是什么?
比如说:
Data Visually Data Itemsource
2 2
3 3
1 1
点击标题后我们有
Data Visually Data Itemsource
1 2
2 3
3 1
它是否应该重新排列参考数据源?
答案 0 :(得分:1)
这对我来说听起来像个错误。 ItemsSource不应按网格排序。
答案 1 :(得分:1)
我对Toolkit DataGrid知之甚少,但如果它与WPF中的任何其他东西一样,它将不会对您的底层ItemsSource进行排序。 (怎么可能?你的ItemsSource可能是一个只读的IEnumerable。)相反,它会创建一个包装ItemsSource项的集合视图,集合视图是被排序的。集合视图是WPF支持排序和分组的方式。
如果您想获得对集合视图(包含已排序列表)的引用,请参阅“How to: Get the Default View of a Data Collection”。
答案 2 :(得分:0)
不,它不应该这样做,它可视化您的数据,只是假设您拥有庞大的数据源并在数据网格中可视化,并且每次在数据网格中对其进行排序时,它会重新排列您的数据源!你可以通过挂钩处理程序来做 顺便说一下,如果可以使用.NET 4.0,则不需要工具包,它将数据网格控件作为嵌入数据元素。
答案 3 :(得分:0)
我认为你真正的问题是获得正确的选定项目。所以请不要使用
<DataGrid SelectedIndex="{Binding CurrentSelectedIdx}"
<e:Interaction.Triggers>
<e:EventTrigger EventName ="SelectionChanged">
<b:CommandAction Command="{Binding DisplayGhCommand}"/>
</e:EventTrigger>
</e:Interaction.Triggers>
你应该使用SelectedItem属性来获得你想要的东西。
<DataGrid SelectedItem="{Binding MyViewModelSelectedItemProperty}" ...