将属性绑定到每个创建的ListBox.ItemTemplate

时间:2014-01-22 16:11:09

标签: c# silverlight xaml silverlight-5.0 listboxitem

我是wpf和silverlight的新手,我有很多需要学习的东西......

我有一个包含模板的列表框

<ListBox ItemsSource="{Binding itemList}" x:Name="list">
    <ListBox.ItemTemplate>
        <DataTemplate x:Name="datatemplate" >
            <Grid Name="{Binding Id}">
                <TextBlock Text="{Binding Txt}"></TextBlock>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

我需要为每个列表项分配AutomationProperties.AutomationId,例如

<ListBoxItem x:Name="lb_a" AutomationProperties.AutomationId="lb_1">
    <Grid Name="grid_a">
        <TextBlock Text="aa"></TextBlock>
    </Grid>
</ListBoxItem>
<ListBoxItem x:Name="lb_b" AutomationProperties.AutomationId="lb_2">
    <Grid Name="grid_b">
        <TextBlock Text="bb"></TextBlock>
    </Grid>
</ListBoxItem>
...

我该怎么办? 甚至可能吗?

1 个答案:

答案 0 :(得分:8)

您可以在ItemContainerStyle

中设置附加属性
<ListBox ItemsSource="{Binding itemList}" x:Name="list">
    <ListBox.ItemTemplate>

    </ListBox.ItemTemplate>
    <ListBox.ItemContainerStyle>
        <Style TargetType="ListBoxItem">
            <Setter Property="AutomationProperties.AutomationId" Value="{Binding MyAutomationIdProperty}"/>
        </Style>
    </ListBox.ItemContainerStyle>
</ListBox>