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

标签 wpf button

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

<Button Tag="BBC World News" URLLink="http://www.bbc.co.uk"/>

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

非常感谢

最佳答案

您可以使用 attached property :

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);
     }
}

然后你可以像这样声明你的按钮:
<Button Tag="BBC World News" ButtonBehavior.UrlLink="http://www.bbc.co.uk" Click="btnArticleView"/>

您单击处理程序将如下所示:
 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

 }

关于wpf - 扩展 WPF 按钮以在新属性中存储数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/565695/

相关文章:

angular - 以 Angular 4 显示一个 div 并隐藏另一个 div

c# - 如何在 WPF 多选项卡 UI 中使用模板?

wpf - XAML 文件 (WPF) 的编译

c# - 从另一个 WPF 窗体打开一个新的 WPF 窗体

css - 按下后更改按钮的边框颜色

apache-flex - 在 Spark 按钮皮肤上添加图标

c# - WPF ItemsControl 拉伸(stretch) ButtonContent 的 FontSize

c# - 如何在代码隐藏中绑定(bind)到 Canvas.Left 或 Canvas.Top 附加属性?

jquery - jsTree -- 在复选框树中添加按钮

button - 如何跳过选择屏幕上的必填字段?