извлечение свойств содержимого из шаблона данных в wpf - PullRequest
0 голосов
/ 24 декабря 2010

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

 <ListBox x:Name="listBox1" Grid.Row="0" SelectionChanged="listBox1_SelectionChanged">             
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <StackPanel Orientation="Horizontal"  Margin="0,2,0,0">
                        <CheckBox Name="cbSelect" VerticalAlignment="Center" Visibility="{Binding isVisible}"/>                                                            
                        <StackPanel Orientation="Vertical">
                            <Grid HorizontalAlignment="Stretch" >
                                <TextBlock Name="txtTitle" VerticalAlignment="Bottom"  Text="{Binding Title}"  Style="{StaticResource PhoneTextExtraLargeStyle}"/>
                                <TextBlock Name="txtDate" Foreground="{StaticResource PhoneInverseInactiveBrush}"  HorizontalAlignment="Right" VerticalAlignment="Center" Text="{Binding CreatedOn}" Margin="0,0,30,0" Style="{StaticResource PhoneTextSmallStyle}" />
                          <!--  <Image x:Name="lineImg" Source="/Icons/appbar.next.rest.png" HorizontalAlignment="Right"  VerticalAlignment="Bottom" Width="48" Height="48"/>-->
                            </Grid>
                            <TextBlock Name="txtContent"  Foreground="{StaticResource PhoneDisabledBrush}" VerticalAlignment="Bottom" Text="{Binding Content}" Style="{StaticResource PhoneTextNormalStyle}" />                            
                            <Line Stroke="{StaticResource PhoneBorderBrush}"  StrokeThickness=" 2" X1="0" Y1="0" X2="{Binding ElementName=listBox1, Path=ActualWidth}" Y2="0" Margin="0,6,0,0" ></Line>
                        <!--   <Image x:Name="lineImg" Source="/Icons/Line.png" HorizontalAlignment="Center" Width="500" Height="2" Margin="0,15,0,0" />-->
                        </StackPanel>
                    </StackPanel>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

В приведенном выше коде после добавления элементов в список я хочу получить текст txtTitle определенного элемента. Как я могу получить это?

1 Ответ

0 голосов
/ 24 декабря 2010

Вам необходимо получить ссылку на ContentPresenter предмета.

ListBoxItem myListBoxItem = (ListBoxItem)(myListBox.ItemContainerGenerator.ContainerFromItem(myListBox.Items.CurrentItem));
ContentPresenter myContentPresenter = FindVisualChild<ContentPresenter>(myListBoxItem);
DataTemplate myDataTemplate = myContentPresenter.ContentTemplate;
TextBlock myTextBlock = (TextBlock)myDataTemplate.FindName("textBlock", myContentPresenter);

Метод FindVisualChild вместе с полным примером можно найти здесь .

...