[英]Hiding an email address in string
我正在構建一個字符串,其中必須隱藏一個電子郵件地址。
string StatusText = "Please reach out here for access."
只是想知道我們如何將電子郵件地址隱藏在字符串中。 我希望“這里”是一個電子郵件地址。 我必須將StatusText綁定到Textblock,以便當用戶單擊“此處”時,Outlook郵件應打開。
這是詳細的代碼:
View.xaml
<TextBlock Text="{Binding StatusText}" />
ViewModel.cs
private string _statusText;
public string StatusText
{
get { return _statusText; }
set { SetProperty(ref _statusText, value); }
}
DisplayMessages()
{
//based on the boolean value, Status Text is set
//When the case is "NoAccess", I want the "here" of StatusText to be clickable and show the mailaddress as abc@abc.com
switch(Flag)
case IsReady:
StatusText = "Application is Ready";
break;
case NoAccess:
StatusText = "Please reach out here. No access can be provided."
break;
}
我希望您利用XAML
。
<TextBlock>
<Run Text="Please reach out "/>
<Hyperlink NavigateUri="YOUR_URL_FOR_OUTLOOK" RequestNavigate="Hyperlink_RequestNavigate">here</Hyperlink>
<Run Text=" for access."/>
</TextBlock>
在后面的代碼中
private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
Process.Start(new ProcessStartInfo(e.Uri.AbsoluteUri));
e.Handled = true;
}
使用此方法的主要好處是可以使用Binding
將您的emailId綁定到Hyperlink
。
步驟1:在Window.Resources中添加以下XAML代碼。
<local:DataTemplateSelectorExt x:Key="Selector"></local:DataTemplateSelectorExt>
<DataTemplate x:Key="NoAccess">
<TextBlock Background="Green">
<Run Text="Please reach out "/>
<Hyperlink NavigateUri="abc@gmail.com" RequestNavigate="Hyperlink_RequestNavigate">here</Hyperlink>
<Run Text=" for access."/>
</TextBlock>
</DataTemplate>
步驟2:用以下代碼片段替換TextBlock XAML代碼。
<Label Content="{Binding StatusText}" ContentTemplateSelector="{Binding Source={StaticResource Selector}}" />
步驟3:在MainWindow類中添加以下方法。
private void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
Popup popup = new Popup { IsOpen = true, Width = 100, Height = 50, Placement = PlacementMode.Mouse };
popup.Child = new TextBlock { Text = (sender as Hyperlink).NavigateUri.ToString(), Background = Brushes.Green };
popup.IsOpen = true;
}
步驟4:最后在您的項目中添加以下類。
public class DataTemplateSelectorExt : DataTemplateSelector
{
public override DataTemplate SelectTemplate(object item, DependencyObject container)
{
if (item == null) return (DataTemplate)null;
FrameworkElement frameworkElement = container as FrameworkElement;
if (item.Equals("Please reach out here. No access can be provided."))
return Application.Current.MainWindow.FindResource("NoAccess") as DataTemplate;
return null;
}
}
希望這會滿足您的要求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.