はここに私のコードです:列が設計時に知られていないのではプログラムでバインドDataGridTemplateColumn
foreach (var columnData in lookup.DataProvider.Metadata)
{
DataGridColumn column = new DataGridTextColumn { Binding = new Binding(columnData.FieldName) };
if (columnData.DataType == typeof(bool))
{
column = new DataGridCheckBoxColumn { Binding = new Binding(columnData.FieldName) };
}
if (columnData.DataType == typeof(DateTime))
{
column = new DataGridTemplateColumn();
//... ????
}
column.Header = columnData.Caption;
DataDataGrid.Columns.Add(column);
}
は基本的に、私はコード内の列とのバインディングを作成しています。
今はテンプレート化された列を追加する必要があり、C#での書き方がわかりません。興味のある場合、誰かに
<sdk:DataGridTemplateColumn Header="Received" CanUserReorder="True" CanUserResize="True" CanUserSort="True" Width="Auto" SortMemberPath="SomeTime">
<sdk:DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<MyControls:MyDateTimeLabel DisplayUtcDate="{Binding SomeTime}" />
</DataTemplate>
</sdk:DataGridTemplateColumn.CellTemplate>
</sdk:DataGridTemplateColumn>
EDIT
:ここで私は追加する必要がある列のXAMLの例です。私はここからソリューションを使用しました:http://www.pettijohn.com/2011/01/silverlight-datagrid-with-dynamic.html
私はXAMLローダーでバージョンを取った。私の名前空間などが文字列にハードコードされているので、間違いなく匂いがする。
私は第二の選択肢を探求し始めました。動的列がどのように表示されるかを次に示します。
column = new DataGridTemplateColumn
{
CanUserSort = true,
SortMemberPath = columnData.FieldName,
CellTemplate = (DataTemplate)this.Resources["DateTimeColumnDataTemplate"]
};
私はリソースからDateTemplate
をロードしています。これはクールでしたが、バインディングはどのようにして行いますか?ここでの提案は、私のDateTimeLabelに行き、バインディングを設定することでした。しかし、それはうまくいかなかった(理由についての記事を参照)。だから、私はこのコードを書いたし、すべてが順調です:
private void OnLoadingRow(object sender, DataGridRowEventArgs e)
{
foreach (DataGridColumn t in this.DataDataGrid.Columns)
{
if (t is DataGridTemplateColumn)
{
var label = t.GetCellContent(e.Row) as DitatDateTimeLabel;
label.SetBinding(DitatDateTimeLabel.DisplayUtcDateProperty, new Binding(t.SortMemberPath));
}
}
}
暗闇の中で撮影しましたが、私はsilverlight/xamlの専門知識を持っていませんでしたが、 '.DataBind()'のようなものはありませんか? – Aidiakapi
はい、でも、どの列、どのヘッダなどを制御したいのですか? – katit
Linqは 'IEnumerable'のすべてに対して '.Select()'拡張メソッドを持っています。匿名型でそれを使ってコントロールできますか? (やはり私はSilverlightの仕組みが分からないので、MSプログラミングの他の分野での経験から推測したものです) –
Aidiakapi