2016-06-21 86 views
0

我有一个包含12个网格的XAML文件,每个网格包含一组相同的标签。它们被命名为grid1,mainLabel1,otherLabel1,countLabel1; grid2,mainLabel2等。我有一个List(T)集合(List(Projects))中的项目集合。列表中的每个元素将包含要保存在标签中的文本。我还需要计算列表中有多少元素,并隐藏超出该范围的所有网格(即,如果列表中有8个项目,隐藏网格9-12)。在多个网格上的多个控件上设置属性

我已经在Powershell中完成了这项工作,但我需要将它放到C#/ XAML文件中,以便为我的团队进行面向未来的验证。在PS中,我可以使用Get-Variable和-ValueOnly为控件的属性赋值,但我似乎无法找到在C#中执行此操作的方法。无可否认,我对C#很陌生,因此任何指导都将不胜感激。

我想过使用for或foreach循环,因为然后我可以在每次迭代中使用i,但使用控件名称似乎有问题。

这是一个运行Powershell的例子。在完成这个设置和其他几行后,我可以使用$ f.Add_Click或$ b.Add_Click并设置一个脚本块。如何在C#中做到这一点?

foreach ($i in $script:projects) 
{ 
    $n = $script:projects.IndexOf($i) + 1 
    $m = $script:projects.IndexOf($i) 

    # get new variables based on existing control names 
    $a = Get-Variable -Name "WPFprojBG$n" -ValueOnly 
    $b = Get-Variable -Name "WPFgrid$n" -ValueOnly 
    $c = Get-Variable -Name "WPFclientLabel$n" -ValueOnly 
    $d = Get-Variable -Name "WPFprojLabel$n" -ValueOnly 
    $e = Get-Variable -Name "WPFcount$n" -ValueOnly 
    $f = Get-Variable -Name "WPFButton$n" -ValueOnly 
} 

回答

1

与WPF的想法是,当你显示一个集合,你把它绑定到一个集合功能的控制和重写它的模板,以显示你想要的格式,每个项目(在你的情况下,项目)。一个可能帮助你的控件是ListView。有关如何操作的教程,请参阅this tutorial

+0

嗯......也许我没有很好地解释视觉效果。网格设置是这样的:http://i.imgur.com/KcvbDh8.png每个绿色区域是一个网格,每个红色块和“1”是文本框,它们是它下面的网格的一部分。左上角是grid1,label1,otherLabel1,count1。在它的右边是grid2,label2等。我不确定这里的ListView教程真的有帮助...或者我想念你想告诉我什么? –

+0

好吧,结果记住它看起来像你只是希望ListView水平流过窗口项目。您的每个绿色区域都会代表您的列表中的一个项目,并且您会将其内容控件放置在项目模板中,如“带有ItemTemplate的ListView”一节中的教程。有关如何制作水平列表视图样式的示例,请参见[此SO链接](http://stackoverflow.com/a/11345736/3407841)。结合这两者并改变项目模板以匹配你自己的布局和瞧。 – leetibbett

+0

这对我来说将是漫长的道路,但它绝对是正确的。谢谢(你的)信息! –