私は次のクラス構造を持っています -
public class Details
{
public string Customer { get; set; }
public string Serial { get; set; }
public string Model { get; set; }
}
public class Summary
{
public string Header { get; set; }
public List<Details> Details { get; set; }
}
この要件を構成するために、このリンクをたどっています。
私の要件は、クラスGridView
のリストによってマップされる動的な列数を持つようなものです。Summary
これで、ヘッダーがヘッダーにマップされGridViewColumn
ます。今までは大丈夫です。プロパティから、動的な番号をDetails
持つ子を再度作成したいと思います。GridView
クラスのリストとクラスのプロパティDetails
で定義された行でマップされた列の。Details
誰でも正しい解決策を教えてもらえますか。
編集リンクを更新しました
まだ試したこと
public class DynamicGridViewConverter: IValueConverter
{
#region IValueConverter Members
public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
var dynamicConfig = value as List<Summary>;
if (dynamicConfig != null)
{
var gridView = new GridView();
foreach (var lineColumn in dynamicConfig)
{
DataTemplate template = new DataTemplate();
FrameworkElementFactory frameworkGrid = new FrameworkElementFactory(typeof(Grid));
FrameworkElementFactory frameworkListView = new FrameworkElementFactory(typeof(ListView));
GridView internalGridView = new GridView();
GridViewColumn col1 = new GridViewColumn();
col1.DisplayMemberBinding = new Binding("Customer");
col1.Header = "Customer Header";
internalGridView.Columns.Add(col1);
GridViewColumn col2 = new GridViewColumn();
col2.DisplayMemberBinding = new Binding("Serial");
col2.Header = "Serial Header";
internalGridView.Columns.Add(col2);
GridViewColumn col3 = new GridViewColumn();
col3.DisplayMemberBinding = new Binding("Model");
col3.Header = "Model Header";
internalGridView.Columns.Add(col3);
frameworkListView.SetValue(ListView.ViewProperty, internalGridView);
var itemSourceBinding = new Binding();
itemSourceBinding.Source = lineColumn.Details;
frameworkListView.SetBinding(ListView.ItemsSourceProperty, itemSourceBinding);
frameworkGrid.AppendChild(frameworkListView);
template.VisualTree = frameworkGrid; gridView.Columns.Add(new GridViewColumn() { Header = lineColumn.Header, CellTemplate = template, Width=200});
}
return gridView;
}
return Binding.DoNothing;
}
public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
{
throw new NotImplementedException();
}
#endregion
}
見せているView Can not be shared by more than one ListView
どの部分が欠けていますか?