Создание динамических ссылок (кнопок гиперссылок) в приложении Windows Phone Silverlight - PullRequest
1 голос
/ 24 ноября 2011

Я пытаюсь создать приложение, которое запрашивает у сервера отправку списка элементов;которые отображаются на странице телефона Windows в виде ссылок. Я использую WebClient.UploadStringAsync, чтобы сделать POST и получить элементы.POST работает нормально, и я могу получить ответ.

Каковы варианты / возможности создания ссылок и добавления динамических ссылок на панель стека в событии UploadStringCompleted. Также HyperLinkButton является опцией дляиспользовать для создания ссылок; я также хочу сделать сообщение, когда ссылка нажата.

Я пытался использовать HyperLinkButton, TextBlock в HyperLink, но ничего не работает.

Есть предложения?


Большое спасибо, ребята, за ваши предложения;ошибка, которую я сделал, состояла в том, чтобы не устанавливать свойство TargetName для HyperLinkButton.Я получил его работать после того, как я установил это правильно,

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

Крз

Ответы [ 2 ]

0 голосов
/ 24 ноября 2011

Вы можете использовать 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;
}
0 голосов
/ 24 ноября 2011

Что не так с использованием встроенного элемента HyperLink?

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

Дополнительные примеры на MSDN .

Вы можете прикрепитьобработчик событий в Navigation и выполните там запрос POST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...