访问DataTemplate中的TextBlock文本

时间:2012-12-01 09:19:45

标签: c# xaml windows-8

我是C#/ XAML编码的新手,我有以下问题。

我有这个ListView,我已经为生成的项目添加了Aditional Templates

 <ListView x:Name="lvItems" HorizontalAlignment="Left" Height="251" Margin="10,42,0,0" VerticalAlignment="Top" RenderTransformOrigin="0.5,0.5" Width="1346" SelectionChanged="lvItems_SelectionChanged" Foreground="{x:Null}" ItemTemplate="{StaticResource Standard500x130ItemTemplate}">

如果我去编辑模板,我会得到以下代码

<!-- Grid-appropriate 500 by 130 pixel item template as seen in the GroupDetailPage -->
<DataTemplate x:Key="Standard500x130ItemTemplate">
  <Grid Height="110"
        Width="480"
        Margin="10">
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="Auto" />
      <ColumnDefinition Width="*" />
    </Grid.ColumnDefinitions>
    <Border Background="{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}"
            Width="110"
            Height="110">
      <Image Source="{Binding Image}"
             Stretch="UniformToFill"
             AutomationProperties.Name="{Binding Title}" />
    </Border>
    <StackPanel Grid.Column="1"
                VerticalAlignment="Top"
                Margin="10,0,0,0">
      <TextBlock Text="{Binding Title}"
                 Style="{StaticResource TitleTextStyle}"
                 TextWrapping="NoWrap" />
      <TextBlock Text="{Binding Subtitle}"
                 Style="{StaticResource CaptionTextStyle}"
                 TextWrapping="NoWrap" />
      <TextBlock Text="{Binding Description}"
                 Style="{StaticResource BodyTextStyle}"
                 MaxHeight="60" />
    </StackPanel>
  </Grid>
</DataTemplate>

现在我想访问Texblocks Title,Subtitle,Description来添加我从XML文件解析的数据。我想我需要访问每个TextBlock的Binding,但我不知道如何做到这一点。你能救我吗?

提前感谢您的帮助

1 个答案:

答案 0 :(得分:2)

您需要设置ItemsSource的{​​{1}}属性,然后根据您创建的模板为每个项目填充字段。

ListView

这里我假设lvItems.ItemsSource = MyObjectsCollection; 是你的对象的集合。从您的模板判断,数据类应如下所示:

MyObjectCollection

所以public class TheObject { public string Title { get; set; } public string Subtitle { get; set; } public string Description { get; set; } public string Image { get; set; } } 应该是MyObjectsCollection个对象的数组(或IEnumerable或List)。