我已经完成了here提供的答案。我已经能够在ListBox中创建自动生成的超链接按钮列表。目标是,当在框中键入不同的用户并单击按钮时,将删除旧的艺术家(假设它是有效的用户名)并替换为新的last.fm用户的艺术家。但是,现在这行不起作用:
ArtistsList.Items.Clear();
这仅适用于文字吗?如果是这样,有人知道另一种方法去删除超链接按钮一旦Go!按钮再次被点击?如果有帮助的话,我会提供我认为相关的page.xaml.cs代码。
if (uname.Text != String.Empty && uname.Text != "Try Another One!")
{
App app = (App)Application.Current;
app.UserName = uname.Text;
String getTopArtists = "http://ws.audioscrobbler.com/2.0/?method=user.gettopartists&user=" + app.UserName + "&api_key=d2d620af554a60f228faed8d502c4936";
WebClient web = new WebClient();
WebClient client = new WebClient();
client.DownloadStringCompleted += new DownloadStringCompletedEventHandler(DownloadStringCompleted);
client.DownloadStringAsync(new Uri(getTopArtists));
}
这就是page.xaml代码中的HyperlinkButton:
<ListBox FontFamily="Calibri" HorizontalAlignment="Center" VerticalAlignment="Center" Width="200" Height="200" Margin="50,140,50,50" x:Name="ArtistsList" Foreground="Crimson">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel>
<HyperlinkButton Content="{Binding Name}" NavigateUri="{Binding Amazon}" TargetName="_blank" Width="173.5" Foreground="Crimson"></HyperlinkButton>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
我相信这是回答这个问题的所有必要代码。如果没有,我可以提供更多。
答案 0 :(得分:2)
而不是使用ArtistsList.Items.Clear(); 试一试 ArtistsList.ItemsSource = NULL; ArtistsList.ItemsSource = [newlistsource]。 如果您不明白,请回复
答案 1 :(得分:0)
mrsaif是正确的,列表绑定所以你不应该尝试手动清除它,在SL3中它会抛出一个错误试图这样做,在itemsource上放置null将删除列表的内容。