扩展WPF按钮以将数据存储在新属性中

4 wpf button

我想扩展一个WPF按钮来存储一些额外的数据,与当前的"Tag"属性类似.附属物是前进的方向吗?我想要存储的数据将是一个URL链接字符串,例如我希望能够执行以下操作:

<Button Tag="BBC World News" URLLink="http://www.bbc.co.uk"/>
Run Code Online (Sandbox Code Playgroud)

谁能帮我理解如何扩展按钮?

非常感谢

松鸦

Sac*_*tin 7

您可以使用附属物:

public class ButtonBehavior
{
     public static readonly DependencyProperty UrlLinkProperty =
            DependencyProperty.RegisterAttached("UrlLink",
                                                typeof(ButtonBase),
                                                typeof(ButtonBehavior),
                                                new FrameworkPropertyMetadata(null));

     public static string GetUrlLink(DependencyObject d)
     {
          return (string)d.GetValue(UrlLinkProperty);
     }

     public static void SetUrlLink(DependencyObject d, string value)
     {
          d.SetValue(UrlLinkProperty, value);
     }
}
Run Code Online (Sandbox Code Playgroud)

然后你可以像这样声明你的按钮:

<Button Tag="BBC World News" ButtonBehavior.UrlLink="http://www.bbc.co.uk" Click="btnArticleView"/>
Run Code Online (Sandbox Code Playgroud)

而你点击处理程序将如下所示:

 protected void btnArticleView(object sender, RoutedEventArgs e)
 {

     Button rb = sender as Button;
     string TheTitle = rb.Tag.ToString();
     string TheURL = ButtonBehavior.GetUrlLink(rb);

     //  Further code here

 }
Run Code Online (Sandbox Code Playgroud)