このセクションでは、列に含まれるセルが編集モードになっていないときに、セルコンテンツとして表示される UI 要素を変更する方法について説明します。
セルコンテンツの UI 要素はデータグリッドによって再利用されることに注意してください。つまり、この列で使用されている UI 要素は、他の列によって作成された可能性があります。
カスタムのセルコンテンツを実装するには、以下のメソッドをオーバーライドする必要があります。
ハイパーリンク列の実装では、メソッドは次の例のようになります。次のメソッドでは、この列に対して別のキーが返されます(デフォルトキーは typeof(TextBlock))。これは、この列が他の列とセルコンテンツの要素を共有しないことを意味します。別の列が同じキーを返す場合は例外ですが、そのようなことはほとんど起こりません。
CreateCellContent メソッドは、再利用されるハイパーリンクがない場合に、データグリッドによって呼び出されます。この場合、ハイパーリンクを含むセルがアンロードされると、そのセルで使用される新しいハイパーリンクが作成されます。作成されたハイパーリンクは、後から他のセルで使用するために保存されます。
ハイパーリンクが作成されるか、再利用されたハイパーリンクが取得されると、データグリッドはパラメータとしてハイパーリンクを渡して BindCellContent メソッドを呼び出します。このメソッドでは、ハイパーリンクのプロパティを設定してセルのデータに連結する必要があります。
連結の Source プロパティにデータ項目を設定するのではなく、ハイパーリンクのデータコンテキストとしてデータ項目を設定することもできます。次に例を示します。
結果は同じですが、この方法のパフォーマンスは、直接連結ソースのプロパティを設定するより低くなります。