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

时间:2011-11-24 06:12:02

标签: silverlight windows-phone-7

我正在尝试构建一个请求服务器发送项目列表的应用程序;它们在windows手机页面上显示为链接。我正在使用WebClient.UploadStringAsync进行POST并获取项目。 POST工作正常,我能得到答复。

在UploadStringCompleted事件中创建链接和向堆栈面板添加动态链接有哪些选项/可能性。还有HyperLinkBut​​ton用于创建链接的选项;我还想在链接时进行发布点击。

我尝试在HyperLink中使用HyperLinkBut​​ton,TextBlock但没有任何作用。

任何建议?


非常感谢你的建议;我做的错误是没有设置HyperLinkBut​​ton的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

2 个答案:

答案 0 :(得分:0)

使用HyperLink内联元素有什么问题?

<RichTextBox IsReadOnly="True">
    <Paragraph>
        Displaying text with <Hyperlink NavigateUri="http://www.msdn.com">hyperlink</Hyperlink>.
    </Paragraph>
</RichTextBox>

更多示例on MSDN

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

答案 1 :(得分:0)

您可以使用带有数据绑定的ListBox而不是StackPanel。列表中的每一行都是一个HyperlinkButton

包含项目模板的ListBox:

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