4

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

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

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

非常感谢

周杰伦

4

5 回答 5

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

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

<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

 }
于 2009-02-20T10:42:08.483 回答
1

像这样定义附加属性

 public static readonly DependencyProperty UrlLinkProperty =
        DependencyProperty.RegisterAttached("UrlLink",
                                            typeof(String),
                                            typeof(ButtonBehavior)
                                            new FrameworkPropertyMetadata(null));
于 2009-03-03T09:37:07.270 回答
0

我不确定你在这里的目标。您不需要扩展 Button 来存储两个值。您始终可以使用包含这两个值的自定义数据对象设置 Button 的 Datacontext。你能解释更多关于你的问题。

于 2009-02-19T17:04:58.787 回答
0

感谢您的答复。

我有一个包含复杂自定义数据模板的列表框。该模板包含一个按钮。当我单击按钮时,我想发送 2 个字符串,即“URL 链接”和“URL 标题”。所以我在我的列表框数据模板中绑定了许多值,我想在按钮单击事件中传递其中两个。代码示例:

 protected void btnArticleView(object sender, RoutedEventArgs e)
    {

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

     //  Further code here

}

和 XAML:

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

干杯

周杰伦

于 2009-02-19T17:19:54.810 回答
0

我知道这是一个旧帖子,但是...

您始终可以创建一个具有 2 个属性“URLText”和“URLTitle”的自定义类“MyURL”,然后创建该对象“objURL”并设置值并设置 button.datacontext = objURL。然后在点击事件中定义 rb 和 obj 以及你的文本变量 obj = rb.datacontext theTitle = obj.urltitle theURL = obj.urltext

于 2010-04-06T14:00:05.900 回答