программно сделать текстовый блок с гиперссылкой между текстом

В XAML у меня есть следующий код:

    <Label Width="120" Height="20" Name="label1" SnapsToDevicePixels="True" HorizontalAlignment="Left" VerticalAlignment="Bottom">
        <TextBlock VerticalAlignment="Center" HorizontalAlignment="Left">
            click
            <Hyperlink RequestNavigate="Hyperlink_RequestNavigate" NavigateUri="foo">here</Hyperlink>
            please
        </TextBlock>
    </Label>

Теперь я хотел бы избавиться от всего TextBlock XAML и добавить этот бит программно. У меня нет проблем с созданием TextBlock, установкой для свойства Text значения «нажмите, пожалуйста» и добавлением гиперссылки на TextBlock.Content. Но как разместить гиперссылку между «щелкните» и «пожалуйста»? И как мне установить текст гиперссылки «здесь»?

У меня пока ничего не получается, пока что есть вот это:

    label2.Content = new TextBlock() { Text = "click please" };
    //(label2.Content as TextBlock).Content does not exist?
    //and even if it does.. how do I squeeze the hyperlink in between the text?

person mtijn    schedule 25.10.2011    source источник
comment
у вас есть код, с которым вы уже пробовали работать?   -  person Adam Tuliper - MSFT    schedule 25.10.2011
comment
Я добавил то, что у меня есть, но это не так много ..   -  person mtijn    schedule 25.10.2011


Ответы (1)


Вот код для добавления TextBlock со ссылкой посередине:

Run run1 = new Run("click ");
Run run2 = new Run(" Please");
Run run3 = new Run("here.");

Hyperlink hyperlink = new Hyperlink(run3)
                       {
                           NavigateUri = new Uri("http://stackoverflow.com")
                       };
hyperlink.RequestNavigate += new System.Windows.Navigation.RequestNavigateEventHandler(hyperlink_RequestNavigate); //to be implemented
textBlock1.Inlines.Clear();
textBlock1.Inlines.Add(run1);
textBlock1.Inlines.Add(hyperlink);
textBlock1.Inlines.Add(run2);
person Nasreddine    schedule 25.10.2011
comment
почти, но это объединяет все встроенные строки, интервал не сохраняется - person mtijn; 25.10.2011
comment
@mtijn Я добавил пробел после клика и перед «Пожалуйста». Теперь он должен работать, как ожидалось - person Nasreddine; 25.10.2011
comment
Мне все еще интересно, хотя ... как получилось, что код XAML автоматически вставляет пробелы, тогда как программно вы должны быть конкретными ?? стоит поднять это как отдельный вопрос? - person mtijn; 26.10.2011
comment
Вы должны поднять вопрос о том, должны ли вы поднимать это как отдельный вопрос как отдельный вопрос. - person Jordan Morris; 06.03.2013