2011-02-04 16 views
1

私は、URLからXMLを解析し、XMLの内容に基づいてGridパネルを生成する小さなアプリケーションを作成することに取り組んでいます。現在、私は他の多くの要素が適切に機能していますが、テーブル内の特定の列を非表示にしたり、適切にサイズを変更したりするために必要な知識が不足しています。これまでのXAMLの基本的な構造は次のとおりです。動的に生成されたXAML

現在、私の解決策は非常に悪いと感じます。私はグリッド内の各列と行をハードにコーディングし、変換後のコードに可視性を結びつけました。特定の条件下では、このコンバーターはVisibility of Hiddenを返しますが、他の条件ではテーブル内に表示する値を返します。これは私には非常にうっすらと感じるので、私はこのシステムを間違って設計したと思う。

私の質問は、このタイプのシステムを設定する適切な方法です。私は、いくつかのビジネスロジックの中でドキュメント構造自体を生成すること、そして生のドキュメント自体の内部にトークンを持つ構造を生成するトークンスワップにもっと慣れています。私が追求している目標を達成する最良の方法は何ですか?

+2

あなたはXAMLを追加するつもりでしたか? – RQDQ

答えて

0

あなたはGridItemsControlDataContextなどのWebサービスから取得XDocumentまたはXElementを提供することができます。その後、DataTemplateを使用して情報を表示します。

XML:背後に

<Entities> 
    <Person Name="Ted" Age="42" /> 
    <Person Name="Sam" Age="19" /> 
    <Person Name="Bob" Age="25" /> 
    <Person Name="Angie" Age="38" /> 
</Entities> 

コード:

this.DataContext = xdoc; 

XAML:

<ItemsControl ItemsSource="{Binding Root.Elements[Person]}" 
       Grid.IsSharedSizeGroup="True"> 
    <ItemsControl.Resources> 
     <DataTemplate DataType="Person"> 
      <Grid> 
       <Grid.ColumnDefinitions> 
        <ColumnDefinition SharedSizeGroup="NameColumn"/> 
        <ColumnDefinition SharedSizeGroup="AgeColumn" /> 
       </Grid.ColumnDefinitions> 
       <TextBox Text="{Binding Path=Attribute[Name].Value}" /> 
       <TextBox Text="{Binding Path=Attribute[Age].Value}" 
         Grid.Column="1"/> 
      </Grid> 
     </DataTemplate> 
    </ItemsControl.Resources> 
</ItemsControl> 

LINQのXMLリソースへ:

関連する問題