2016-06-21 7 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との考え方は、コレクションを表示するとき、あなたが収集可能なコントロールにバインドして、必要な形式で(あなたのケースでは、プロジェクト)の各項目を表示するには、そのテンプレートをオーバーライドすることです。あなたを助けるかもしれない1つのコントロールはListViewです。方法についてのチュートリアルについては、this tutorialを参照してください。

+0

うーん...私は視覚的な部分をうまく説明していないかもしれない。グリッドは次のように設定されています:http://i.imgur.com/KcvbDh8.png各緑色の領域はグリッドで、各赤色のブロックと「1」はその下のグリッドの一部であるテキストボックスです。左上はgrid1、label1、otherLabel1、count1です。その右側にはgrid2、label2などがあります。リストビューのチュートリアルが実際に役立つかどうかは分かりません。 –

+0

これは、ListViewがウィンドウ全体にアイテムを横方向に流し込むようにしていることを念頭に置いています。緑色の各領域はリスト内のアイテムを表し、「ItemTemplateを使用したListView」セクションのチュートリアルのように、コンテンツコントロールをアイテムテンプレートにレイアウトします。水平方向のリストビュースタイルを作成する方法の例については、[このSOのリンク](http://stackoverflow.com/a/11345736/3407841)を参照してください。これらの2つを組み合わせて、あなたのレイアウトに合わせてitemtemplateを変更してください。 – leetibbett

+0

これは私にとっては長い道のりですが、間違いなく正しい道です。情報をありがとう! –

関連する問題