6


0

WPFテンプレートとGridViewのDataContextへのバインド

RadGridViewで一連のバインドされた列を作成しようとしています。2つの列にハイパーリンクを作成するためにテンプレートを使用しています。 これは基本的に私が持っているものです:


and,


RadGridView自体は、特にDistributorプロパティを持つDistributorContainerオブジェクトのセットにバインドされます。 linkTemplateは、Distributorオブジェクトのプロパティを直接参照するため、ハイパーリンクのデータコンテキストをDistributorに設定する必要があります。

残念ながら、ハイパーリンクのデータコンテキストはDistributorContainerオブジェクトです。 ディストリビューターのリストにバインドするリストでlinkTemplate(およびHyperlink_Clickハンドラー)を使用していますが、基本的に同じものなので、このテンプレートを再利用したいと思います。

テンプレートが、GridViewDataColumnへのTemplateBindingを介して、ディストリビューターをDataContextとして取得しないのはなぜですか?

1 Answer


10


これを実現する方法の例を次に示します。

XAML


C#

namespace WpfApplication1
{
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();

            DataContext =
                from i in Enumerable.Range(0, 10)
                select new DistributorContainer()
                {
                    ID = i,
                    Distributor1 = new Distributor() {
                        Name = String.Format("Distributor1 Name{0}", i) },
                    Distributor2 = new Distributor() {
                        Name = String.Format("Distributor2 Name{0}", i) }
                };
        }
    }

    public class DistributorContainer
    {
        public int ID { get; set; }
        public Distributor Distributor1 { get; set; }
        public Distributor Distributor2 { get; set; }
    }

    public class Distributor
    {
        public string Name { get; set; }
    }
}