C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: WPFにおけるHyperlinkColumnについて


(過去ログ 132 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■77811 / inTopicNo.1)  WPFにおけるHyperlinkColumnについて
  
□投稿者/ くなーら (13回)-(2015/11/24(Tue) 08:29:31)

分類:[C#] 

2015/11/24(Tue) 08:29:58 編集(投稿者)

いつもお世話になっております。

WPFのDataGridでHyperLinkを表示したいのですが、
これをXAML上ではなく、コード上で設定したいのです。

調べた結果、DataGridHyperlinkColumnという型があるのはわかったのですが、
実際に文字列(URL?)を入れる過程が見つからず......

適当に文字列型を入れてみたらやはりエラーが出まして。(当たり前)

DataGridHyperlinkColumnという型を使用しているのだから、
値もDataGridHyperlinkColumnでなければいけないのはわかるのですが、
プロパティにURL文字列を設定できそうな所が無く......

お手数ですが、やり方をご存知の方がいらっしゃれば、ご教授願いたく思います。
よろしくお願いします。

引用返信 編集キー/
■77821 / inTopicNo.2)  Re[1]: WPFにおけるHyperlinkColumnについて
□投稿者/ Hongliang (373回)-(2015/11/24(Tue) 13:27:55)
DataGridHyperlinkColumnは文字通りColumnであって、あくまで列を表現するだけです。
実際にリンク文字列を表示するのは、その列に属している各行のセルになります。
各行に設定されているオブジェクトから(とは限らないけど)リンク文字列を引っ張ってくるためにはContentBindingを設定します。

ところで、コードからって言うのはバインディングを除外するという含意があるんですかね。
// WPFのDataGridってバインディングなしで使えたっけ?
引用返信 編集キー/
■77844 / inTopicNo.3)  Re[2]: WPFにおけるHyperlinkColumnについて
□投稿者/ くなーら (14回)-(2015/11/24(Tue) 22:09:36)
No77821 (Hongliang さん) に返信
> DataGridHyperlinkColumnは文字通りColumnであって、あくまで列を表現するだけです。
> 実際にリンク文字列を表示するのは、その列に属している各行のセルになります。
> 各行に設定されているオブジェクトから(とは限らないけど)リンク文字列を引っ張ってくるためにはContentBindingを設定します。
> 
> ところで、コードからって言うのはバインディングを除外するという含意があるんですかね。
> // WPFのDataGridってバインディングなしで使えたっけ?


回答ありがとうございます。
ContentBindingの設定で行えるということなので、その辺りを調べながら試行錯誤させて頂きました。
しかしながら解決が出来ておりません。
ContentBindingに設定するものが、BindingBaseクラスのものというのがわかりましたが、
あれBindingBaseクラスって抽象クラス.....

コードをお見せしますので、
ここがいけない、という箇所を教えていただけると幸いです。



//コンストラクタ内 変数の名前等、適当なものに。

DataTable dataTable = new DataTable("dataTable");

dataGrid.Columns.Add(new DataGridTextColumn() { Header = Title, Binding = new Binding("Title") });
dataGrid.Columns.Add(new DataGridTextColumn() { Header = Url,  Binding = new Binding("Url") });

dataTable.Columns.Add(new DataColumn("Title", typeof(string)));
dataTable.Columns.Add(new DataColumn("Url", typeof(DataGridHyperlinkColumn)));

DataGridHyperlinkColumn dgh;
DataRow newRowItem;
foreach (var item in Data)
{
    newRowItem = dataTable.NewRow();
  newRowItem["Title"] = "Test";
    
  //問題の箇所 どう設定すれば......
    dgh = null;
    dgh = new DataGridHyperlinkColumn();
  //試してみたが駄目だった書き方
    dgh.ContentBinding = new Binding("http〜〜〜");
    newRowItem["Url"] = hhh;

    dataTable.Rows.Add(newRowItem);
}

dataGrid.DataContext = dataTable;



以上です。よろしくお願いします。

/*

コード上、というのはcsファイルで、という意味でしかないです。
誤解させてすみません。

*/

引用返信 編集キー/
■77851 / inTopicNo.4)  Re[3]: WPFにおけるHyperlinkColumnについて
□投稿者/ Hongliang (375回)-(2015/11/25(Wed) 12:48:31)
> dataGrid.Columns.Add(new DataGridTextColumn() { Header = Url, Binding = new Binding("Url") });
これをDataGridHyperlinkColumnに置き換えて、適切にプロパティを設定すれば良いんじゃないすかね。
引用返信 編集キー/
■77860 / inTopicNo.5)  Re[4]: WPFにおけるHyperlinkColumnについて
□投稿者/ くなーら (15回)-(2015/11/25(Wed) 20:57:19)
No77851 (Hongliang さん) に返信
>>dataGrid.Columns.Add(new DataGridTextColumn() { Header = Url, Binding = new Binding("Url") });
> これをDataGridHyperlinkColumnに置き換えて、適切にプロパティを設定すれば良いんじゃないすかね。


できました!
というか当たり前を見逃していたようですね。お恥ずかしい。
ありがとうございました。

/*
正直、型が違うのに紐付けが行えることには何だか違和感が

*/
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -