Динамический (программно) ItemTemplate (DataTemplate) в Silverlight? - PullRequest
1 голос
/ 01 марта 2010

У меня есть этот код:

      <Grid x:Name="LayoutRoot">
   <Grid HorizontalAlignment="Left" Height="900" Width="1200">
   <Grid.RowDefinitions>
            <RowDefinition Height="300"></RowDefinition>
            <RowDefinition Height="200"></RowDefinition>
            <RowDefinition Height="200"></RowDefinition>
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="300"></ColumnDefinition>
            <ColumnDefinition Width="300"></ColumnDefinition>
            <ColumnDefinition Width="300"></ColumnDefinition>
            <ColumnDefinition Width="300"></ColumnDefinition>
        </Grid.ColumnDefinitions>
    <ListBox x:Name="lst1" Width="300" Height="100" Grid.Row="0" Grid.Column="0">
                <ListBox.ItemTemplate>
                    <DataTemplate>
                        <StackPanel Orientation="Horizontal" Margin="3">
                            <TextBlock Text="Id:" Foreground="Brown"></TextBlock>
                            <TextBlock Text="{Binding Id}" Foreground="Blue"></TextBlock>
                        </StackPanel>
                    </DataTemplate>
                </ListBox.ItemTemplate>
  </ListBox>
  <ListBox x:Name="lst1" Width="300" Height="100" Grid.Row="0" Grid.Column="1"/>
  <ListBox x:Name="lst2" Width="300" Height="100" Grid.Row="0" Grid.Column="2"/>
  <ListBox x:Name="lst3" Width="300" Height="100" Grid.Row="0" Grid.Column="3"/>
  </Grid>
    </Grid>

Как я могу создать DataTemplate / ItemTemplate в коде с Silverlight?

1 Ответ

0 голосов
/ 02 марта 2010

Чтобы создать DataTemplate динамически, вам нужно построить строку Xaml, которая описывает его, используя объекты XML-манипуляции, такие как XDocument или XmlTextWriter. Корнем этого Xaml должен быть сам DataTemplate (не забудьте включить или правильные пространства имен).

Затем вы можете передать полученную строку XamlReader.Load, которая создаст DataTemplate, которую вы затем назначите свойству ItemTemplate ListBox.

...