C# Lightswitch-隐藏列

C# Lightswitch-隐藏列,c#,visual-studio-lightswitch,lightswitch-2012,C#,Visual Studio Lightswitch,Lightswitch 2012,FindControl似乎只引用网格的名称,而不是网格内的列名。我也找不到任何关于FindControlInCollection的文档或示例 在这一点上,我没有任何复杂的逻辑来总结。只需要隐藏列。我正在使用C#和VS Update 2。在屏幕的激活事件下,使用以下代码块: 使用网格名称获取IControlItemProxy 获取控件本身 通过索引访问列并动态设置其可见性 使用指令将添加到System.Windows.Controls partial void屏幕名_Activated() {

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


在这一点上,我没有任何复杂的逻辑来总结。只需要隐藏列。我正在使用C#和VS Update 2。

在屏幕的激活事件下,使用以下代码块:

  • 使用网格名称获取
    IControlItemProxy
  • 获取控件本身
  • 通过索引访问列并动态设置其可见性
  • 使用指令将
    添加到
    System.Windows.Controls
  • partial void屏幕名_Activated()
    {
    IContentItemProxy代理=this.FindControl(“NameOfGrid”);
    proxy.ControlAvailable+=新事件处理程序((s1,e1)=>
    {
    DataGrid DataGrid=(DataGrid)e1.Control;
    dataGrid.Columns[0]。可见性=System.Windows.Visibility.Columns;
    dataGrid.Columns[1]。可见性=System.Windows.Visibility.Columns;
    });
    }
    
    布莱恩的回答包含了你所需要的

    FindControl仅获取该控件的代理。虽然可以使用它设置一些内容,但是访问实际的控件的唯一方法是通过代理的ControlAvailable处理程序访问它,该处理程序在其ControlAvailableEventArgs参数中提供对基础控件的引用


    此外,正如您所看到的,您实际上并没有通过网格中使用的控件设置列可见性,而是直接使用DataGrid的Columns集合进行设置。

    没问题。我会尽我所能帮助你。:-)
    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;
            });
    }