在Windows Phone Silverlight应用程序中生成动态链接(超链接按钮)

在Windows Phone Silverlight应用程序中生成动态链接(超链接按钮),silverlight,windows-phone-7,Silverlight,Windows Phone 7,我正在尝试构建一个应用程序,请求服务器发送项目列表;它们在windows phone页面上显示为链接。我正在使用WebClient.UploadStringAsync发布并获取项目。这篇帖子很好,我能得到回复 for (int i = 0; i <= itemList.GetUpperBound(0); i++) { if (!String.IsNullOrEmpty(itemList[i, 1])) {

我正在尝试构建一个应用程序,请求服务器发送项目列表;它们在windows phone页面上显示为链接。我正在使用WebClient.UploadStringAsync发布并获取项目。这篇帖子很好,我能得到回复

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);
                } 
}
UploadStringCompleted事件中创建链接并将动态链接添加到堆栈面板的选项/可能性有哪些。Hyperlink按钮也是创建链接的选项;我还想在点击链接时发表一篇文章

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);
                } 
}
我尝试使用超链接按钮,超链接中的文本块,但没有任何效果

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);
                } 
}
有什么建议吗

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);
                } 
}

谢谢大家的建议;我犯的错误是没有设置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);
                } 
}

for(inti=0;iinline元素有什么不对

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);
                } 
}
<RichTextBox IsReadOnly="True">
    <Paragraph>
        Displaying text with <Hyperlink NavigateUri="http://www.msdn.com">hyperlink</Hyperlink>.
    </Paragraph>
</RichTextBox>

显示带有超链接的文本。
更多的例子

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);
                } 
}

您可以在导航上附加事件处理程序,并在那里执行POST请求。

您可以使用带有数据绑定的
列表框
,而不是
堆栈面板
。列表中的每一行都是一个
超链接按钮

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);
                } 
}
带有项目模板的列表框:

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);
                } 
}
<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>

代码隐藏:

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);
                } 
}
// 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.stackoverflow.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;
}
//当用户按下HyperlinkButton时执行处理程序
私有无效超链接按钮\单击(对象发送者,路由目标e)
{
//获取单击的按钮并显示其内容(即URL)
//(你可以在这里发帖)
显示(“单击的URL”+((HyperlinkButton)发件人).Content);
}
私有无效按钮1\u单击(对象发送者,路由目标)
{
//准备一些演示数据
列表URL=新列表();
URL.Add(“http://www.stackoverflow.com");
URL.Add(“http://www.google.com");
//将列表或URL设置为列表框的项目源;每个URL都有自己的按钮
listBox1.ItemsSource=URL;
}

Meep.已经停止使用
HyperlinkButton
了。Mango有一个元素,它不需要密集的样式就可以看起来可读。我也会尝试这两个选项,看看它们的行为和性能。@Claus你的意思是超链接比按钮更好。是的,非常好。因为它实际上是为这个目的而设计的。HyperLinkButton是Silverlight的一个遗留项,它需要大量的样式才能看起来可读。@Claus我可以将
RichText
的超链接绑定到一个项目列表,或者我必须通过代码生成它们吗?你可以像添加任何其他元素一样轻松地将它们添加到
DataTemplate
中。但是,如果它是纯链接,也可以使用w,并附加命令绑定。(通常超链接与文本结合使用)