2013-05-20 89 views
3

FindControl似乎只引用網格的名稱,而不是網格內的列名稱。我找不到任何有關FindControlInCollection的文檔或示例。Lightswitch - 隱藏列

在這一點上,我沒有任何複雜的邏輯來包裝它。只需要隱藏列。我使用C#和VS更新2

回答

2

在屏幕激活時,使用此代碼塊:

  1. 使用網格的名稱獲取一個IControlItemProxy
  2. 獲取控件本身。
  3. 按索引訪問列並動態設置其可見性。
  4. 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; 
     }); 
} 
2

布賴恩的答案包含你所需要的。

FindControl只得到代理的控件。雖然有幾件事情可以使用它來設置,但控制的唯一方法是通過代理的ControlAvailable處理程序訪問它,該處理程序提供對其參數ControlAvailableEventArgs中的基礎控件的引用。

此外,你可以看到,你實際上並沒有通過了在電網中使用的控件集列的可見性,您可以設置使用它的DataGrid中集合,而不是直接。

+0

+1謝謝Yann進一步闡述 –

+0

沒問題。我在這裏盡我所能提供幫助。 :-) –