2011-02-04 111 views
1

我正致力於生成一個小型應用程序,該應用程序可以從URL解析XML並根據XML的內容填充Grid面板。目前,我還有許多其他元素可以正常工作,但仍缺乏隱藏或顯示錶格中某些列並使其適當調整大小所需的知識。以下是我的XAML的基本結構。動態生成XAML

目前,我覺得我的解決方案非常差。我在網格中對每個coulmn和row進行了硬編碼,並將其可見性與Converter後面的代碼綁定。在某些情況下,該轉換器將返回一個隱藏可見性,但在其他條件下,它將返回要在表中顯示的值。這對我來說感覺很渺茫,所以我認爲我錯誤地設計了這個系統。

我的問題是更多關於設置這種類型的系統的正確方法。我更熟悉在某些業務邏輯中生成文檔結構本身,然後在原始文檔本身內使用令牌生成結構的令牌交換。什麼是實現我追求的目標的最佳方式?

+2

是你要添加的XAML? – RQDQ 2011-02-04 18:45:14

回答

0

你可以提供XDocument或從Web服務作爲ItemsControlGridDataContext檢索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 to XML資源: