1

我有一个 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>
4

1 回答 1

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 员工那里得到答案。

希望这对您有所帮助。

于 2013-05-15T13:01:15.787 回答