5.Hyperlink
戻るHyperlink
ハイパーリンクをクリックしますと該当のURLが規定のブラウザーで開く機能です。画面は下記の通りです。
起動時
クリックすると拡大します
リンクをクリックした時
クリックすると拡大します
下記がハイパーリンクのZAMLの定義です。CommandはOpenWebsiteCommand2です。
View
<TextBlock Padding="0,4,0,0" TextAlignment="Center" HorizontalAlignment="Left" VerticalAlignment="Top" Margin="112,97,0,0" Background="#CCFFFF" Name="txtHyperlink" Height="19" Width="166"> <Hyperlink Command="{Binding OpenWebsiteCommand2}" CommandParameter="http://www.aa.cyberhome.ne.jp/~bel/"> <!--Label--> c# Programing Academy </Hyperlink> </TextBlock>
Ads by Google
ViewModelは下記の通りです。OpenWebsiteCommand2は、ListenerCommandを使った例で、OpenWebsiteCommandはRelayCommandを使った例です。
ViewModel
using System; // ObservableCollection using System.Collections.Generic; using System.Linq; using System.Text; using System.Windows.Forms; //INotifyPropertyChanged //PropertyChanged using System.ComponentModel; //参照設定が必要 //using System.Configuration; using Livet; using Livet.Commands; using Livet.Messaging; //CloseCommand using Livet.Messaging.Windows; //MessageBox using System.Windows; //ICommand using System.Windows.Input; // ListCollectionView using System.Windows.Data; //ArrayList using System.Collections; //XmlReader using System.Xml; //XDocument using System.Xml.Linq; //XPathDocument using System.Xml.XPath; using LivetWPFChromeHelpDesk1.Models; using LivetWPFChromeHelpDesk1.Views; using LivetWPFChromeHelpDesk1.ViewModels; namespace LivetWPFChromeHelpDesk1.ViewModels { class ViewModel4 : ViewModel { #region 変更通知プロパティ //----------------------------------------------- public string txt本日 { get; set; } //----------------------------------------------- #endregion Window win = null; public ViewModel4() { Loaded = new Livet.Commands.ListenerCommand<Window>((w) => { if (NeedHideOwner && w.Owner != null && w.Owner.Visibility == Visibility.Visible) { win = w; //w.Owner.Hide(); } }); //Initialize()では表示されない txt本日 = Convert.ToString(DateTime.Today.ToShortDateString()); } public bool NeedHideOwner { get; set; } public ICommand Loaded { get; private set; } public void Initialize() { if (win != null) win.Owner.Hide(); } /// <summary> /// Command for opening the website. /// </summary> private RelayCommand<object> _OpenWebsiteCommand; public ICommand OpenWebsiteCommand { get { if (_OpenWebsiteCommand == null) { _OpenWebsiteCommand = new RelayCommand<object>(OpenWebsite); } return _OpenWebsiteCommand; } } private void OpenWebsite(object url) { System.Diagnostics.Process.Start(url as string); } /* RelayCommandの時は下記でも可能 private RelayCommand<object> _OpenSupportWebsiteCommand; private void OpenWebsite(object url) { System.Diagnostics.Process.Start(url as string); } */ //-------------------------------------------------------- ListenerCommand<string> _OpenWebsiteCommand2; public ListenerCommand<string> OpenWebsiteCommand2 { get { if (_OpenWebsiteCommand2 == null) { _OpenWebsiteCommand2 = new ListenerCommand<string>(OpenWebsite, () => true); } return _OpenWebsiteCommand2; } } void OpenWebsite(string str) { if (str == null) { Messenger.Raise(new InformationMessage("Cancel", "Error", MessageBoxImage.Error, "Info")); return; } if (str != null && str.Length > 0) { System.Diagnostics.Process.Start(str); } } //-------------------------------------------------------- #region CloseCommand private ViewModelCommand _CloseCommand; public ViewModelCommand CloseCommand { get { if (_CloseCommand == null) { _CloseCommand = new ViewModelCommand(Close); } return _CloseCommand; } } public void Close() { var window = System.Windows.Application.Current.Windows.OfType<Window>().SingleOrDefault((w) => w.IsActive); window.Close(); } #endregion } }