C# Lightswitch-隐藏列
FindControl似乎只引用网格的名称,而不是网格内的列名。我也找不到任何关于FindControlInCollection的文档或示例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() {
在这一点上,我没有任何复杂的逻辑来总结。只需要隐藏列。我正在使用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;
});
}