Teď jsem se trochu zasekl na vytváření ToolTipů na každé položce ListBoxu, a na štěstí mě přivedly i některé rady na webu, ale o tom až níže. Celý kód je tentokrát velice primitivní. Prvně si vytvoříme ListBox, se šablonou, která bude zobrazovat TextBlock a nad ním ToolTip. Data budeme brát pomocí Data Bindingu:
<ListBox x:Name="lbSongs" Height="160" MaxHeight="160" Margin="0" Padding="0">
<ListBox.ItemTemplate>
<DataTemplate>
<TextBlock Text="{Binding Path=FileName}">
<ToolTipService.ToolTip>
<TextBlock Text="{Binding Path=DirectoryName}"> </TextBlock>
</ToolTipService.ToolTip>
</TextBlock>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
Problém s některými články na webu byl ten že jsem chtěl použít přímo
using System.Windows.Controls;
using System.Windows.Documents;
class Song
{
public Song(string fn)
{
string p, s;
FS.GetPathAndFileName(fn, out p, out s);
FileName = s;
DirectoryName = p;
}
public string FileName
{
get
;
set
;
}
public string DirectoryName
{
get
;
set
;
}
public override string ToString()
{
return FileName;
}
}
Posledním krokem je naplnění ListBoxu, to samozřejmě provedeme v Code-Behindu:
public RightToolTipApproachForCustomObjects()
{
InitializeComponent();
PopulateListBox();
}
void PopulateListBox()
{
List<Song> files3 = new List<Song>();
files3.Add(new Song(@"C:\Users\sunamo\Desktop\Dolcezza 1.mp3"));
files3.Add(new Song(@"C:\Users\sunamo\Desktop\Dolcezza 2.mp3"));
lbSongs.ItemsSource = files3;
}
Finální výsledek může pak vypadat nějak takto:
