Я видел несколько предложений, что вы можете добавить гиперссылку на приложение WPF через Hyperlink
элемент управления.
Вот как я пытаюсь использовать это в своем коде:
<Window
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
x:Class="BookmarkWizV2.InfoPanels.Windows.UrlProperties"
Title="UrlProperties" Height="754" Width="576">
<Grid>
<Grid.RowDefinitions>
<RowDefinition></RowDefinition>
<RowDefinition Height="40"/>
</Grid.RowDefinitions>
<Grid>
<ScrollViewer ScrollViewer.VerticalScrollBarVisibility="Auto" Grid.RowSpan="2">
<StackPanel >
<DockPanel LastChildFill="True" Margin="0,5">
<TextBlock Text="Url:" Margin="5"
DockPanel.Dock="Left" VerticalAlignment="Center"/>
<TextBox Width="Auto">
<Hyperlink NavigateUri="http://www.google.co.in">
Click here
</Hyperlink>
</TextBox>
</DockPanel >
</StackPanel>
</ScrollViewer>
</Grid>
<StackPanel HorizontalAlignment="Right" Orientation="Horizontal" Margin="0,7,2,7" Grid.Row="1" >
<Button Margin="0,0,10,0">
<TextBlock Text="Accept" Margin="15,3" />
</Button>
<Button Margin="0,0,10,0">
<TextBlock Text="Cancel" Margin="15,3" />
</Button>
</StackPanel>
</Grid>
</Window>
Я получаю следующую ошибку:
Свойство «Текст» не поддерживает значения типа «Гиперссылка».
Что я делаю не так?
RequestNavigateEventArgs
находится вSystem.Windows.Navigation
пространстве имен.Process
иProcessStartInfo
оба находятся вSystem.Diagnostics
пространстве имен.В дополнение к ответу Fuji мы можем сделать обработчик многоразовым, превратив его в присоединенное свойство:
И используйте это так:
источник
Hyperlink
это не элемент управления, это элемент содержимого потока , его можно использовать только в элементах управления, которые поддерживают содержимое потока, например aTextBlock
.TextBoxes
иметь только простой текст.источник
Если вы хотите локализовать строку позже, тогда этих ответов недостаточно, я бы предложил что-то вроде:
источник
ИМХО самый простой способ - использовать новый элемент управления, унаследованный от
Hyperlink
:источник
Обратите внимание, что
Hyperlink
не нужно использовать для навигации. Вы можете подключить его к команде.Например:
источник
Я использовал ответ в этом вопросе, и у меня возникли проблемы с ним.
Возврат исключения:
{"The system cannot find the file specified."}
После небольшого расследования. Оказывается, если ваше приложение WPF - .CORE, вам нужно сделать
UseShellExecute
этоtrue
.Это упоминается в документах Microsoft :
Итак, чтобы сделать эту работу вам нужно добавить
UseShellExecute
вtrue
:источник
UseShelExecute = true
какой-либо идеей, почему?Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri) { UseShellExecute = true });
получаю сообщение об ошибке «System.ComponentModel.Win32Exception:« Система не может найти указанный файл »» при попытке перейти по гиперссылкеМне понравилась идея Артура о многоразовом обработчике, но я думаю, что есть более простой способ сделать это:
Очевидно, что при запуске любого процесса могут возникнуть угрозы безопасности, поэтому будьте осторожны.
источник
Надеюсь, это поможет кому-то.
источник
На мой взгляд, один из самых красивых способов (поскольку он теперь общедоступен) - это использование поведения.
Это требует:
Microsoft.Xaml.Behaviors.Wpf
XAML код:
И
код поведения:
источник