1

我发布了一个关于在 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;
 }

这填充了datagrid110 列,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 隐藏。非常感谢您的帮助。

4

1 回答 1

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;

不幸的是,我无法对此进行测试,因此它可能无法正常工作。

于 2013-10-03T09:35:33.867 回答