2014-01-22 4 views
1

Я совершенно новый для МОФ и Silverlight, и у меня есть много, чтобы учиться ...Bind свойства каждого ListBox.ItemTemplate создан

У меня есть ListBox, которые содержат такое шаблон

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

, как я могу это сделать? это возможно?

ответ

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

приятно! но я на silverlight и x: Тип не поддерживается ... – Doc

+1

@Doc Попробуйте 'TargetType =" ListBoxItem "'. dkozl, я уже отредактировал ваш ответ, он ожидает одобрения. – John

+0

@Doc, пропущенный тег Silverlight. Джон прав, просто удалите бит '{x: Type}' и должен работать. Проверить обновленный ответ – dkozl