我想为用户提供一个设置,他可以在其中重新排序datagrid. 我知道我可以使用 来DisplayIndex实现此目的,但我的问题是如何保存每列的顺序,我如何知道哪一列被移动到第一个位置等等?
我想过使用列标题,但我不知道这是否是最好的解决方案。
下面是我使用的数据网格:
<DataGrid GridLinesVisibility="All" VerticalGridLinesBrush="#FFE5E2DB" IsReadOnly="true" AutoGenerateColumns="False" VerticalContentAlignment="Center"
ItemsSource="{Binding DisplayIndexes, UpdateSourceTrigger=PropertyChanged}" CanUserSortColumns="True" SelectionUnit="FullRow"
HorizontalAlignment="Stretch" Margin="5,5,5,0" Name="dgDisplayIndexes"
TabIndex="1" RowHeight="30"
CanUserAddRows="False" HorizontalScrollBarVisibility="Hidden" VerticalScrollBarVisibility="Hidden" ColumnWidth="Auto" CanUserReorderColumns="True"
CanUserResizeColumns="False" CanUserResizeRows="False" VerticalAlignment="Top" Height="150">
<DataGrid.RowStyle>
<Style TargetType="{x:Type DataGridRow}">
<Setter Property="Padding" Value="0"/>
<Setter Property="Margin" Value="0"/>
<Setter Property="VerticalAlignment" Value="Center"/>
</Style>
</DataGrid.RowStyle>
<DataGrid.Columns>
<DataGridTextColumn Header="ID" Binding="{Binding ID}" DisplayIndex="0" Visibility="Hidden" />
<DataGridTemplateColumn SortMemberPath="status"
Header="{Binding Vertaling.DELIVERY_BEZORGORDER_LOPENDEORDERSTAB_DG_STATUS.Vertaling, Source={x:Static Application.Current}, NotifyOnSourceUpdated=True}"
DisplayIndex="1" >
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Image Height="16" Width="16" Stretch="Fill" Source="{Binding status, Converter={StaticResource getIconForStatus}}" />
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn> …Run Code Online (Sandbox Code Playgroud) 我遇到了问题.我是一名VB.net程序员,我正在努力学习C#.在我做过的很多VB项目中,我总是使用一个viewModelBase类,我可以通过我的项目通知我的属性,当我尝试将代码从vb转换为C#时,我得到一个method name expected就行了:if (TypeDescriptor.GetProperties(this)(propertyName) == null)
[Conditional("DEBUG"), DebuggerStepThrough()]
public void VerifyPropertyName(string propertyName)
{
if (TypeDescriptor.GetProperties(this)(propertyName) == null)
{
string msg = "Invalid property name: " + propertyName;
if (this.ThrowOnInvalidPropertyName)
{
throw new Exception(msg);
}
else
{
Debug.Fail(msg);
}
}
}
Run Code Online (Sandbox Code Playgroud)
我真的找不到任何解决方案!有帮助吗?
谢谢