2012-04-23 3 views
0

У меня есть код XAML о ListBox объекта:получить предметы в ListBoxItem

<ListBox x:Name="FirstListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}" SelectionChanged="FirstListBox_SelectionChanged"> 
        <ListBox.ItemTemplate> 
         <DataTemplate> 
          <StackPanel> 
           <Grid> 
            <TextBlock Text="{Binding LineOne}" TextWrapping="NoWrap" Margin="50,0,0,0" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
            <TextBlock Text="{Binding LineTwo}" TextWrapping="NoWrap" Margin="12,60,0,0" Style="{StaticResource PhoneTextSubtleStyle}"/> 
            <CheckBox VerticalAlignment="Top" Margin="0,-5,0,0"/> 
           </Grid>         
          </StackPanel>        
         </DataTemplate> 
        </ListBox.ItemTemplate> 
       </ListBox> 

я был получить мой ListBoxItem по коду:

ListBoxItem item = this.list.ItemContainerGenerator.ContainerFromIndex(2) as ListBoxItem; 

, но я не знаю, как получить все элементы в этом элементе списка (включая текстовый блок и флажок).

, пожалуйста, помогите мне. Спасибо всем.

+1

http://msdn.microsoft.com/en-us/library/system.windows.media.visualtreehelper.aspx может помочь вам –

ответ

1

В идеале, вы хотите, чтобы ваш флажок привязан к свойству модели данных элемента, так, например, вы можете иметь ...

public string LineOne { get; set; } 
public string LineTwo { get; set; } 
public bool MyBooleanValue { get; set; } 

, а затем

<ListBox x:Name="FirstListBox" Margin="0,0,-12,0" ItemsSource="{Binding Items}" SelectionChanged="FirstListBox_SelectionChanged"> 
    <ListBox.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <Grid> 
        <TextBlock Text="{Binding LineOne}" TextWrapping="NoWrap" Margin="50,0,0,0" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
        <TextBlock Text="{Binding LineTwo}" TextWrapping="NoWrap" Margin="12,60,0,0" Style="{StaticResource PhoneTextSubtleStyle}"/> 
        <CheckBox Checked="{Binding MyBoolValue, Mode=TwoWay}" VerticalAlignment="Top" Margin="0,-5,0,0"/> 
       </Grid>         
      </StackPanel>        
     </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

Затем вы можете отбросить DataContext для элемента, который вы сейчас просматриваете (по методу крана или тому подобного), или когда вы разбираете свою коллекцию «Items», все состояния флажка будут уже в дочерних объектах.

+0

вы можете показать это яснее? Я не очень хорош в C#. спасибо :) – user1259366

+0

Что вам нужно для уточнения? – ZombieSheep

+0

oh. Понимаю. Спасибо за вашу помощь. : D – user1259366

Смежные вопросы