我有一个Infragistics XamDataGrid
(使用2011.1 WPF),我想模仿文件浏览器(Finder / Windows资源管理器)或iTunes的行为,只需单击一下即可选择一行,以及第二次单击打开该字段的编辑器。正如我当前定义的那样,只需单击一下即可开始编辑所选行。我这样定义了我的网格:
<ig:XamDataGrid>
<ig:XamDataGrid.FieldLayoutSettings>
<ig:FieldLayoutSettings AutoGenerateFields="False" RecordSelectorLocation="None" />
</ig:XamDataGrid.FieldLayoutSettings>
<ig:XamDataGrid.FieldLayouts>
<ig:FieldLayout>
<ig:Field Name="Name" Width="*" />
</ig:FieldLayout>
</ig:XamDataGrid.FieldLayouts>
</ig:XamDataGrid>
答案 0 :(得分:3)
我建议您将XamDataGrid的FieldSettings的CellClickAction设置为SelectRecord,并为CellValuePresenter创建一个Style并处理其PreviewMouseLeftButtonDown事件。在处理程序中,您应该检查单击的记录是否处于活动状态,如果是,则可以启动编辑模式。您可以像这样定义XamDataGrid:
<igDP:XamDataGrid >
<igDP:XamDataGrid.Resources>
<Style TargetType="{x:Type igDP:CellValuePresenter}">
<EventSetter Event="PreviewMouseLeftButtonDown" Handler="CellValuePresenter_PreviewMouseLeftButtonDown"/>
</Style>
</igDP:XamDataGrid.Resources>
<igDP:XamDataGrid.FieldSettings>
<igDP:FieldSettings CellClickAction="SelectRecord"/>
</igDP:XamDataGrid.FieldSettings>
</igDP:XamDataGrid>
并使用以下事件处理程序:
private void CellValuePresenter_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
if ((sender as CellValuePresenter).Record.IsActive)
{
(sender as CellValuePresenter).Editor.StartEditMode();
}
}
当您遇到与Infragistics相关的问题时,我建议您写入Infragistics论坛:
http://www.infragistics.com/community/forums/default.aspx?GroupID=38
因为它更易于跟踪,您将从Infragistics员工那里得到答案。
希望这会对你有所帮助。