Осъществяване на текстово кликване в Silverlight

Вмъкването на текст с възможност за кликване или хипервръзки в основния текст е лесно, ако използвате софтуер, създаден за създаване на уеб приложения. Въпреки това, в Microsoft Silverlight, създаването на текст с възможност за кликване е по-трудно, защото предлага само клас "хипервръзка". Този клас създава бутон, който не може да бъде вмъкнат в текстови блокове. За да заобиколите ограничението, трябва да създадете нов контрол, със свой собствен метод и свойство, за да обработвате текста и да вмъквате хипервръзки.

1.

Стартирайте Visual Studio и създайте или отворете проект Silverlight.

2.

Създайте контрола, наследена от стандартния контрол на WrapPanel, като използвате следния код:

public class LinkTextBlock: WrapPanel {}

3.

Създайте свойство, което може да обработва текста в новосъздадения контрол. Използвайте този код, за да го създадете:

публична статична текстура на завещанието DependencyProperty; статичен LinkTextBlock () {TextProperty = DependencyProperty.Register ("Текст", typeof (string), typeof (LinkTextBlock), нов PropertyMetadata (String.Empty, TextChangedCallback)); } лична статична void TextChangedCallback (DependencyObject d, DependencyPropertyChangedEventArgs e) {var control = (LinkTextBlock) d; control.BuildControls (); } public string Текст {get {return (string) GetValue (TextProperty); } set {SetValue (TextProperty, value); }}

Полученият контрол изглежда така:

public class LinkTextBlock: WrapPanel {публично статично DependencyProperty TextProperty; статичен LinkTextBlock () {TextProperty = DependencyProperty.Register ("Текст", typeof (string), typeof (LinkTextBlock), нов PropertyMetadata (String.Empty, TextChangedCallback)); } лична статична void TextChangedCallback (DependencyObject d, DependencyPropertyChangedEventArgs e) {var control = (LinkTextBlock) d; control.BuildControls (); } public string Текст {get {return (string) GetValue (TextProperty); } set {SetValue (TextProperty, value); }}}

4.

Създайте нов метод за разделяне на текста на думи. Методът трябва да се извиква при всяко обновяване на текста. Използвайте този код, за да създадете метода:

частни void BuildControls () {Children.Clear (); foreach (UIElement контрол от от дума в Text.Split ('') изберете BuildWordControl (word)) {Children.Add (control); }}

5.

Създайте контрола за всяка дума, върната от метода "BuildControls", като използвате този код:

частно UIElement BuildWordControl (низ текст) {резултат от UIElement; url url, displayText; if ((CheckLinkMethod! = null) && (CheckLinkMethod (текст, изходящ URL адрес, изходящ текст) == вярно)) {Uri navigateUri = new Uri (www.yourwebsite.com/resource); result = new HyperlinkButton () {Content = displayText, Tag = url, NavigateUri = navigateUri}; ((HyperlinkButton) резултата) .Click + = delegate (object sender, RoutedEventArgs e) {}; } else {result = new TextBlock () {Текст = текст}; } резултат от връщане; }

Заменете "www.yourwebsite.com/resource" с връзката към целевата уеб страница.

Препоръчано