2016-06-21 85 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

這對我來說將是漫長的道路,但它絕對是正確的。謝謝(你的)信息! –