【发布时间】:2014-09-22 12:57:10
【问题描述】:
XAML
<ListBox x:Name="lsbQueue" Margin="0,0,0,10" Grid.RowSpan="2" Loaded="lsbQueue_Loaded" SelectionChanged="lsbQueue_SelectionChanged" ItemContainerStyle="{StaticResource ListBoxItemStyle1}" ItemsSource="{Binding}">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel x:Name="stk" Orientation="Vertical">
<!-- This is the bugger which I need to access behind the scenes-->
<TextBlock x:Name="tbActive" FontSize="35" FontFamily="Segoe UI Symbol" Text="" Height="115" Margin="0,0,0,-110" Tag="Active"/>
<!-- -->
<TextBlock Text="{Binding Path=SongName}" FontSize="35" Width="388" FontWeight="Normal" Margin="60,0,0,0"/>
<TextBlock Width="390" FontWeight="Thin" Margin="60,-5,0,10" Opacity="0.55">
<Run Text="{Binding Artist}" />
<Run Text=", " /> <!-- space -->
<Run Text="{Binding Album}" />
</TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
上面是我的列表框,它是在下面的代码的帮助下填充的:
C#
void GetQueue()
{
var songs = new List<song>();
for (int i = 0; i < MediaPlayer.Queue.Count; i++)
{
songs.Add(new song {
SongName = MediaPlayer.Queue[i].Name.ToString(),
Album = MediaPlayer.Queue[i].Album.Name.ToString(),
Artist = MediaPlayer.Queue[i].Artist.ToString()
});
}
lsbQueue.ItemsSource = songs.ToList();
//lsbQueue.SelectedValue.ToString();
GlobalVars._song = MediaPlayer.Queue.ActiveSongIndex;
lsbQueue.SelectedIndex = GlobalVars._song;
// .......
}
和
public class song
{
public string SongName { get; set; }
public string Album { get; set; }
public string Artist { get; set; }
}
public class Song : List<song>
{
public Song()
{
Add(new song {
SongName = "",
Album = "",
Artist = ""
});
}
}
我尝试过使用 VisualTreeHelper 和其他扩展方法,可以在这里找到:
但我没有成功。我几乎已经放弃了这个。有没有人有任何想法可以做什么。谢谢你。
如您所见 - 我可以成功获取媒体队列,但我想在“SelectedItem”的左侧显示一个视觉提示,如 TextBlock 中的播放字符 - tbActive。希望这会有所帮助!
【问题讨论】:
-
您需要严格按照 GeekChamp 的教程进行操作。查看解决方案。
-
嗨。抱歉,如果我无法让您知道我需要什么。实际上,我已经能够成功获取 Media Queue(当前在队列中的歌曲)。但是,我想在“Active Song”旁边显示一个正在播放的符号,
tbActive就是那个!我期待能够访问 tbActive 以希望更改其Text属性 - 但仅限于SelectedItem或SelectedIndex。谢谢。 -
是的,上面有我名字的解决方案正是您想要的。 :)
标签: c# xaml windows-phone-8 datatemplate visualtreehelper