Lightswitch - 隐藏列

时间:2013-05-20 13:57:16

标签: c# visual-studio-lightswitch lightswitch-2012

FindControl似乎只引用网格的名称,而不是网格中的列名。我找不到任何关于FindControlInCollection的文档或示例。

此时我没有任何复杂的逻辑来包装它。只需要隐藏列。我正在使用C#和VS Update 2.

2 个答案:

答案 0 :(得分:2)

在屏幕的Activate事件下,使用此代码块:

  1. 使用网格名称获取IControlItemProxy
  2. 获取控件本身。
  3. 按索引访问列并动态设置其可见性。
  4. using添加System.Windows.Controls指令。
  5. 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 列直接收集。