none
ListView innerhalb ListView mit Überschriften

    Allgemeine Diskussion

  • Habe ein in XAML definiertes Formular mit einem ListView innerhalb eines ListViews mit Spaltenüberschriften. Die Daten sollen per C# reingeschrieben werden. Leider kommt im inneren ListView nichts an. Hat jemand eine Idee?

    XAML

        <Window.Resources>
            <DataTemplate x:Key="AnalyseTemplate">
                <ListView>
                    <ListView.View>
                        <GridView ColumnHeaderToolTip="Analyse von Werten">
                            <GridViewColumn DisplayMemberBinding="{Binding Path=tCol1}"  Header="Col One" Width="50"/>
                            <GridViewColumn  DisplayMemberBinding="{Binding Path=tCol2}" Header="Col Two"  Width="120"/>
                            <GridViewColumn  DisplayMemberBinding="{Binding Path=tCol3}" Header="Col Three"  Width="100"/>
                        </GridView>
                    </ListView.View>
                </ListView>
            </DataTemplate>
    
        </Window.Resources>
        <DockPanel LastChildFill="True">
            <ListView Name="listView" IsSynchronizedWithCurrentItem="True">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="No" DisplayMemberBinding="{Binding Path=nNo}" />
                        <GridViewColumn Header="Type" DisplayMemberBinding="{Binding Path=tType}" />
                        <GridViewColumn Header="Description" DisplayMemberBinding="{Binding Path=tDescription}" />
                        <GridViewColumn Header="Analyse"  CellTemplate="{StaticResource AnalyseTemplate}" />
                    </GridView>
                </ListView.View>
            </ListView>
        </DockPanel>
    

    C#

        public partial class MainWindow : Window
        {
            public class Order
            {
                public int nNo { get; set; }
                public string tType { get; set; }
                public string tDescription { get; set; }
                public List<AnalyseList> Analyse { get; set; }
            }
    
            public class AnalyseList
            {
                public string tCol1 { get; set; }
                public string tCol2 { get; set; }
                public string tCol3 { get; set; }
            }
    
            public MainWindow()
            {
                InitializeComponent();
                DataContext = this;
    
                List<Order> ListOrder = new List<Order>
                {
                    new Order
                    {
                        nNo = 1,
                        tType = "Selection",
                        tDescription = "Welche Farbe zeigt die Ampel",
                        Analyse = new List<AnalyseList>
                        {
                            new AnalyseList {tCol1 = "1", tCol2 = "rot", tCol3 = "A"},
                            new AnalyseList {tCol1 = "2", tCol2 = "gelb", tCol3 = "B"},
                            new AnalyseList {tCol1 = "3", tCol2 = "grün", tCol3 = "C"},
                        }
                    },
    
                    new Order
                    {
                        nNo = 1,
                        tType = "Compare",
                        tDescription = "Welche Farbe zeigt die Ampel",
                        Analyse = new List<AnalyseList>
                        {
                            new AnalyseList {tCol1 = "<", tCol2 = "X", tCol3 = "<"},
                            new AnalyseList {tCol1 = "<=", tCol2 = "Y", tCol3 = "<="},
                            new AnalyseList {tCol1 = ">", tCol2 = "Z", tCol3 = ">"},
                        }
                    }
                };
                    
                listView.ItemsSource = ListOrder;
            }
        }

    Vielen Dank

    Montag, 16. September 2013 23:03

Alle Antworten

  • Hey,

    du muss in deinem Template noch die ItemSource auf Analyse setzten:

    <Window.Resources>
            <DataTemplate x:Key="AnalyseTemplate">
                <ListView ItemsSource="{Binding Analyse}">
                    <ListView.View>
                        <GridView ColumnHeaderToolTip="Analyse von Werten">
                            <GridViewColumn DisplayMemberBinding="{Binding Path=tCol1}"  Header="Col One" Width="50"/>
                            <GridViewColumn  DisplayMemberBinding="{Binding Path=tCol2}" Header="Col Two"  Width="120"/>
                            <GridViewColumn  DisplayMemberBinding="{Binding Path=tCol3}" Header="Col Three"  Width="100"/>
                        </GridView>
                    </ListView.View>
                </ListView>
            </DataTemplate>
    
        </Window.Resources>
        <DockPanel LastChildFill="True">
            <ListView Name="listView" IsSynchronizedWithCurrentItem="True" ItemsSource="{Binding ListOrder}">
                <ListView.View>
                    <GridView>
                        <GridViewColumn Header="No" DisplayMemberBinding="{Binding Path=nNo}" />
                        <GridViewColumn Header="Type" DisplayMemberBinding="{Binding Path=tType}" />
                        <GridViewColumn Header="Description" DisplayMemberBinding="{Binding Path=tDescription}" />
                        <GridViewColumn Header="Analyse"  CellTemplate="{StaticResource AnalyseTemplate}"/>
                    </GridView>
                </ListView.View>
            </ListView>
        </DockPanel>

     public partial class MainWindow : Window
        {
            public class Order : INotifyPropertyChanged 
            {
                public int nNo { get; set; }
                public string tType { get; set; }
                public string tDescription { get; set; }
                public List<AnalyseList> Analyse { get; set; }
    
                public event PropertyChangedEventHandler PropertyChanged;
            }
    
            public class AnalyseList
            {
                public string tCol1 { get; set; }
                public string tCol2 { get; set; }
                public string tCol3 { get; set; }
            }
    
            List<Order> _ListOrder = new List<Order>
                {
                    new Order
                    {
                        nNo = 1,
                        tType = "Selection",
                        tDescription = "Welche Farbe zeigt die Ampel",
                        Analyse = new List<AnalyseList>
                        {
                            new AnalyseList {tCol1 = "1", tCol2 = "rot", tCol3 = "A"},
                            new AnalyseList {tCol1 = "2", tCol2 = "gelb", tCol3 = "B"},
                            new AnalyseList {tCol1 = "3", tCol2 = "grün", tCol3 = "C"},
                        }
                    },
    
                    new Order
                    {
                        nNo = 1,
                        tType = "Compare",
                        tDescription = "Welche Farbe zeigt die Ampel",
                        Analyse = new List<AnalyseList>
                        {
                            new AnalyseList {tCol1 = "<", tCol2 = "X", tCol3 = "<"},
                            new AnalyseList {tCol1 = "<=", tCol2 = "Y", tCol3 = "<="},
                            new AnalyseList {tCol1 = ">", tCol2 = "Z", tCol3 = ">"},
                        }
                    }
                };
    
            public List<Order> ListOrder
            {
                get 
                {
                    return _ListOrder;   
                }
                set
                {
                    _ListOrder = value;
                }
            }
    
            public MainWindow()
            {
                InitializeComponent();
                this.DataContext = this;
            }
        }

    Gruß Markus

    • Als Antwort vorgeschlagen Thomas Fröhle Dienstag, 5. November 2013 14:53
    Dienstag, 5. November 2013 14:48
  • *****************************************************************************************************

    Dieser Thread wurde mangels weiterer Beteiligung ohne bestätigte Lösung abgeschlossen.

    Neue Rückfragen oder Ergänzungen zu diesem Thread bleiben weiterhin möglich.

    *****************************************************************************************************

    Ciprian Bogdan, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-PrinzipEntwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.





    Mittwoch, 2. April 2014 15:38
    Besitzer