我发布了一个关于在WPF中使用lambda显示两列的问题,虽然我收到了很好的建议,我相信我试图让事情变得更复杂,所以我采取了不同的方法。 我的Silverlight业务应用程序使用
填充datagrid1
DBDomainContext context = new DBDomainContext();
dataGrid1.ItemsSource = context.DBTables;
context.Load(context.GetDataBasesQuery());
GetDataBasesQuery()
方法在domainservices.cs中定义如下:
public IQueryable<DBTable>GetDataBases()
{
return this.ObjectContext.DBTables;
}
这会将datagrid1
填入10列AutoGenerateColumns="True"
我可以按如下方式隐藏列:
void DGPro_AutoGeneratingColumnForDB(object sender, DataGridAutoGeneratingColumnEventArgs e)
{
if (e.PropertyName == "col1")
e.Cancel = true;
if (e.PropertyName == "col2")
e.Cancel = true;
}
如何根据用户输入隐藏它们? 我想使用一个复选框供用户选择col1或col2来隐藏。 非常感谢您的帮助。
答案 0 :(得分:0)
稍微扩展@ DonA的好建议,您可以尝试将自动生成事件处理程序更改为:
private void DGPro_AutoGeneratingColumnForDB(object sender,
DataGridAutoGeneratingColumnEventArgs e)
{
e.Name = e.PropertyName;
}
然后使用属性/列的名称,您应该能够简单地调用:
var column = dataGrid.Columns.First(c => c.Name = "col1");
column.Visibility = Visibility.Collapse;
不幸的是,我无法对此进行测试,因此可能无效。