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

御返答いただき有難うございます。

複雑なカスタムデータテンプレートを含むリストボックスがあります。テンプレートにはボタンが含まれています。ボタンをクリックすると、「URLリンク」と「URLタイトル」の2つの文字列を送信したいと思います。そのため、リストボックスのデータテンプレートに多くの値をバインドしており、ボタンクリックイベントでそのうちの2つを渡したいと思います。コード例:

 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

これが古い投稿であることは知っていますが...

「URLText」と「URLTitle」の 2 つのプロパティを持つカスタム クラス「MyURL」をいつでも作成し、そのオブジェクト「objURL」を作成して値を設定し、button.datacontext = objURL を設定できます。次に、クリック イベントで rb と obj を定義し、テキスト変数 obj = rb.datacontext theTitle = obj.urltitle theURL = obj.urltext を定義します。

于 2010-04-06T14:00:05.900 に答える
0

ここでのあなたの目標についてはよくわかりません。2 つの値を格納するために Button を拡張する必要はありません。この 2 つの値を含むカスタム データ オブジェクトを使用して、ボタンの Datacontext をいつでも設定できます。あなたの問題についてもっと説明してもらえますか。

于 2009-02-19T17:04:58.787 に答える