gpt4 book ai didi

reflection - 如何立即验证Silverlight 3 Datagrid中新插入的行?

转载 作者:行者123 更新时间:2023-12-03 22:19:47 25 4
gpt4 key购买 nike

我有一个带有自定义DataGrid用户控件的Silverlight 3工具库。该网格无法直接访问WCF RIA Services实体类型,因此当用户在网格为空时单击该网格时,我使用反射来添加新项目:

private void InsertEmptyRecord()
{
if (this._dataGrid.ItemsSource == null)
return;

Type[] typeParameters = this._dataGrid.ItemsSource.GetType().GetGenericArguments();
if (typeParameters.Count() > 0)
{
Type itemType = typeParameters[0];
object newItem = System.Activator.CreateInstance(itemType);

Type sourceType = typeof(System.Windows.Ria.EntityCollection<>);
Type genericType = sourceType.MakeGenericType(itemType);
System.Reflection.MethodInfo addMethod = genericType.GetMethod("Add");
addMethod.Invoke(this._dataGrid.ItemsSource, new object[] { newItem });

// == Validate data here ==
}
}


这可行,但是添加新项后我还需要它进行验证。我可以通过两种方式查看此操作:


强制用户进入编辑模式
在新行的第一个单元格中
网格。 (这将迫使
验证他们是否单击任何地方
页面上的其他)。
强制验证
当新行立即运行
已添加(或当网格松动时
焦点。)


我还没有办法使它们都起作用。尝试过此操作,但仅选择该行,不强制运行验证:

this._dataGrid.SelectedItem = newItem;
System.ComponentModel.IEditableObject editableItem = newItem as System.ComponentModel.IEditableObject;
if (editableItem != null)
editableItem.BeginEdit();


有什么建议?

最佳答案

this question的帮助下,这项工作才得以完成。

我从上面的代码中将以下内容添加到“ == Validate data here ==”部分中:

DataGridRow newRow = this._dataGrid.ChildrenOfType<DataGridRow>().FirstOrDefault();
if (newRow != null)
{
newRow.Loaded += (sender, e) =>
{
this._dataGrid.CurrentItem = newItem;
this._dataGrid.BeginEdit();
};
}


这将强制第一个单元格立即进入编辑模式。

关于reflection - 如何立即验证Silverlight 3 Datagrid中新插入的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2195938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com