在Windows Phone Silverlight应用程序中生成动态链接(超链接按钮)
问题描述:
我正在尝试构建一个请求服务器发送项目列表的应用程序;它们在windows phone页面上显示为链接。我使用WebClient.UploadStringAsync来执行POST并获取这些项目。 POST工作正常,我能够得到回应。在Windows Phone Silverlight应用程序中生成动态链接(超链接按钮)
在UploadStringCompleted事件中创建链接并添加动态链接到堆栈面板的选项/可能性。HyperLinkButton是用来创建链接的选项;我也希望在链接被点击。
我尝试使用超链接中的HyperLinkButton,TextBlock,但没有任何效果。
有什么建议?
非常感谢您的建议;我做的错误是没有设置HyperLinkButton的TargetName属性。我得到它的工作后,我将它设置正确,
for (int i = 0; i <= itemList.GetUpperBound(0); i++)
{
if (!String.IsNullOrEmpty(itemList[i, 1]))
{
HyperlinkButton btn = new HyperlinkButton();
btn.Content = itemList[i, 1];
btn.TargetName = "_blank";
ItemPanel.Children.Add(btn);
}
}
KRZ
答
您可以使用带有数据绑定的ListBox
而不是StackPanel
。列表中的每一行将是一个HyperlinkButton
。
列表框与项模板:
<ListBox HorizontalAlignment="Stretch" Margin="12,6,0,0" Name="listBox1" VerticalAlignment="Top" VerticalContentAlignment="Stretch">
<ListBox.ItemTemplate>
<DataTemplate>
<HyperlinkButton Content="{Binding}" Click="HyperlinkButton_Click" />
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
后面的代码:
// handler is executed when a HyperlinkButton was pressed by user
private void HyperlinkButton_Click(object sender, RoutedEventArgs e)
{
// get the clicked button and show its content (which is the URL)
// (you would do your POST here)
MessageBox.Show("Clicked URL " + ((HyperlinkButton)sender).Content);
}
private void button1_Click(object sender, RoutedEventArgs e)
{
// prepare some demo data
List<string> urls = new List<string>();
urls.Add("http://www.*.com");
urls.Add("http://www.google.com");
// set list or URLs as item source of list box; each URL will have its own button
listBox1.ItemsSource = urls;
}
MEEP。已经停止使用'HyperlinkButton'。芒果有一个元素,不需要密集的造型看起来可读。 –
我会尝试这两个选项以查看行为和他们的表现。 @克劳斯你的意思是HyperLink是比Button更好的选择。 – srcKode
是的,非常非常。因为它实际上是为此目的而设计的。 HyperLinkButton是Silverlight的一个剩余部分,它需要大量的样式才能看清楚。 –