[英]Extend property auto generated class by entity framework
我有一个WPF应用程序,其中使用Entity Framework 。
绑定到DataGrid
的集合是由Entity Framework生成的表的自动生成的类的集合。
模型
(由实体框架自动生成)
public partial class tblTest
{
public tblTest()
{
}
public int TestId{get;set;}
public string TestName {get;set;}
public string UpdatedBy {get;set;}
}
视图模型
private ObservableCollection<tblTest> _objTest;
public ObservableCollection<tblTest> TestList
{
get { return _objTest; }
set { _objTest; = value;}
}
XAML
<DataGrid Name="grdTest" ItemSource="{Binding Path=TestList,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}
AutoGenerateColumns="False" CanUserAddRows="True">
<Datagrid.Columns>
<DataGridTextColumn Width="140">
<DataGridTextColumn.Binding>
<Binding Path="TestName" Mode="TwoWay" >
<Binding.ValidationRules>
<localVal:ValidationRules/>
</Binding.ValidationRules>
</Binding>
</DataGridTextColumn.Binding>
<DataGridTextColumn.Header>
<TextBlock Width="128" Text="Test Name" ToolTip="Enter name"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
<DataGridTextColumn Width="140">
<DataGridTextColumn.Binding>
<Binding Path="UpdatedBy" Mode="TwoWay" >
<Binding.ValidationRules>
<localVal:ValidationRules/>
</Binding.ValidationRules>
</Binding>
</DataGridTextColumn.Binding>
<DataGridTextColumn.Header>
<TextBlock Width="128" Text="Updated By" ToolTip="Name of the user that updated the record"/>
</DataGridTextColumn.Header>
</DataGridTextColumn>
</Datagrid.Columns>
</DataGrid>
我允许用户在DataGrid
添加新行,当在DataGrid
添加新的空行时,我希望由当前用户凭据自动生成UpdatedBy
列(并将其设置为readonly )。
有没有一种方法可以扩展测试表的模型类,以编写构造函数以采用当前用户详细信息(更新者)。 还是有不同的方法呢?
是的,您可以通过将新零件添加到自动生成的类中来完成此操作,通常是在新文件中:
public partial class tblTest
{
public tblTest(string updatedBy)
{
this.UpdatedBy = updatedBy;
}
}
秘密是指示编译器整个类可以拆分为多个源文件的partial
关键字。
编辑:您可以处理AddingNewItem
事件以执行所需的操作:
在XAML中:
<DataGrid ... AddingNewItem="DataGrid_AddingNewItem" ...>
...
<DataGridTextColumn Width="140" IsReadOnly="True">
在后面的代码中:
private void DataGrid_AddingNewItem(object sender, AddingNewItemEventArgs e)
{
e.NewItem = new tblTest { UpdatedBy = Environment.UserName };
}
每当用户愿意添加新项目时,就会进入最后一个空行的编辑模式,从而触发该事件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.