FindControl似乎只引用网格的名称,而不是网格中的列名。我找不到任何关于FindControlInCollection的文档或示例。
此时我没有任何复杂的逻辑来包装它。只需要隐藏列。我正在使用C#和VS Update 2.
答案 0 :(得分:2)
在屏幕的Activate事件下,使用此代码块:
IControlItemProxy
。 using
添加System.Windows.Controls
指令。
partial void ScreenName_Activated()
{
IContentItemProxy proxy = this.FindControl("NameOfGrid");
proxy.ControlAvailable += new EventHandler<ControlAvailableEventArgs>((s1, e1) =>
{
DataGrid dataGrid = (DataGrid)e1.Control;
dataGrid.Columns[0].Visibility = System.Windows.Visibility.Collapsed;
dataGrid.Columns[1].Visibility = System.Windows.Visibility.Collapsed;
});
}
答案 1 :(得分:2)
布莱恩的答案包含你需要的东西。
FindControl 仅获取控件的代理。虽然您可以使用它设置一些内容,但实现实际控件的唯一方法是通过代理的 ControlAvailable 处理程序访问它,该处理程序提供对 ControlAvailableEventArgs 参数中的基础控件。
另外,正如您所看到的,您实际上并未通过网格中使用的控件设置列可见性,而是使用 DataGrid 的列直接收集。