0

私は次のクラス構造を持っています -

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

どの部分が欠けていますか?

4

0 に答える 0