2011-02-04 3 views
1

Я работаю над созданием небольшого приложения, которое анализирует XML из URL-адреса и заполняет панель Grid на основе содержимого XML. В настоящее время у меня есть много других элементов, работающих должным образом, но по-прежнему не хватает знаний, необходимых для скрытия или отображения определенных столбцов в таблице и правильного изменения размера. Вот основная структура моего XAML до сих пор.Динамически сгенерированный XAML

В настоящее время я чувствую, что мое решение очень плохое. Я жестко закодировал каждый coulmn и row внутри Grid и привязал их видимость к коду за конвертером. При определенных условиях этот конвертер вернет видимость скрытого, но при других условиях он возвращает значение, отображаемое в таблице. Мне это очень небрежно, поэтому я предполагаю, что я неправильно разработал эту систему.

Мой вопрос скорее о правильном способе настройки этого типа системы. Я гораздо больше знаком с созданием самой структуры документа в рамках некоторой бизнес-логики, а затем с заменой токенов, создающей структуру с токеном внутри самого исходного документа. Каков наилучший способ достижения цели, которую я преследую?

+2

Были ли вы собираетесь добавить XAML? – RQDQ

ответ

0

Вы могли бы предоставить XDocument или XElement извлечена из веб-службы в качестве DataContext в качестве ItemsControl с Grid. Затем вы можете использовать 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-ресурсов:

Смежные вопросы