Silverlight中的动态(以编程方式)DataTemplate(DataTemplate)?

时间:2010-03-01 11:06:36

标签: c# silverlight silverlight-3.0 datatemplate itemtemplate

我有这段代码:

      <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>

如何在Silverlight后面的代码中创建DataTemplate / ItemTemplate?

1 个答案:

答案 0 :(得分:0)

要动态创建DataTemplate,您需要使用XDocumentXmlTextWriter等XML操作对象构建描述它的Xaml字符串。这个Xaml的根必须是DataTemplate本身(记得包含或正确的命名空间)。

然后,您可以传递生成的字符串XamlReader.Load,然后创建DataTemplate,然后将其分配给ItemTemplate的{​​{1}}属性。