Вытащить конкретный элемент управления из списка Silverlight с учетом случайного индекса в списке? - PullRequest
1 голос
/ 26 сентября 2011

У меня есть список, который использует следующий шаблон для привязки списка клипов.Я хотел бы вытащить один из этих клипов наугад и воспроизвести его.Это легкая часть и довольно прямолинейная.Затем я хотел бы сделать ассоциированное изображение видимым.Я не могу выяснить, как получить элементы управления, связанные с индексом в списке.Любые идеи.

`

            <StackPanel Margin="0,0,0,12" Width="420">
                <Button Click="Button_Click" Background="{StaticResource PhoneAccentBrush}" 
                        Height="90" Width="420" x:Name="btn">
                    <StackPanel Orientation="Horizontal" >
                        <Image x:Name="Selected" Width="75" Source="Images/Playing.png" Visibility="Collapsed" />
                        <TextBlock Text="{Binding Name}" TextWrapping="NoWrap" Width="330" VerticalAlignment="Center"
                                   Style="{StaticResource PhoneTextLargeStyle}" />
                    </StackPanel>
                </Button>
            </StackPanel>
    </DataTemplate>

`

Ответы [ 2 ]

1 голос
/ 26 сентября 2011

Это ListBox, поэтому список объектов связан с его ItemsSource.Добавьте новое свойство «NowPlaying» к классу этих объектов.Свяжите это свойство со свойством Visibility «Выбранного» изображения с помощью BoolToValueConverter

Теперь вам просто нужно переключить это новое свойство и не нужно углубляться в Visual Tree, чтобы делать то, что должна делать система привязкиделать для тебя

1 голос
/ 26 сентября 2011

Чтобы найти контролы, сгенерированные из вашего шаблона, вы можете использовать методы на ItemContainerGenerator.Например, если вы хотите найти элементы по индексу '5', выполните следующие действия:

ListBoxItem lbi = listBox.ItemContainerGenerator.ContainerFromIndex(5) as ListBoxItem;

Существуют различные другие методы, которые позволяют вам найти контейнер, например, с привязанным элементом модели.

Затем вы можете перемещаться по визуальному дереву (я написал помощник с именем Linq-to-VisualTree , который делает это немного проще), чтобы найти нужные вам элементы.Чтобы найти изображение:

var image = lbi.Descendants<Image>().Single() as Image;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...