我想扩展一个 WPF 按钮来存储一些额外的数据,类似于当前的“标签”属性。附加属性是前进的方向吗?我要存储的数据将是一个 URL 链接字符串,例如,我希望能够执行以下操作:
<Button Tag="BBC World News" URLLink="http://www.bbc.co.uk"/>
谁能帮我理解如何扩展按钮?
非常感谢
周杰伦
您可以使用附加属性:
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
}
像这样定义附加属性
public static readonly DependencyProperty UrlLinkProperty =
DependencyProperty.RegisterAttached("UrlLink",
typeof(String),
typeof(ButtonBehavior)
new FrameworkPropertyMetadata(null));
我不确定你在这里的目标。您不需要扩展 Button 来存储两个值。您始终可以使用包含这两个值的自定义数据对象设置 Button 的 Datacontext。你能解释更多关于你的问题。
感谢您的答复。
我有一个包含复杂自定义数据模板的列表框。该模板包含一个按钮。当我单击按钮时,我想发送 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"/>
干杯
周杰伦
我知道这是一个旧帖子,但是...
您始终可以创建一个具有 2 个属性“URLText”和“URLTitle”的自定义类“MyURL”,然后创建该对象“objURL”并设置值并设置 button.datacontext = objURL。然后在点击事件中定义 rb 和 obj 以及你的文本变量 obj = rb.datacontext theTitle = obj.urltitle theURL = obj.urltext