Ιεραρχική δέσμευση με ένθετες ListViews σε WPF δεδομένων

ψήφοι
1

Έχω κάποια δεδομένα που έχει ένα τραπέζι λεπτομέρεια. Θέλω τα στοιχεία που πρέπει να παρουσιάζονται σε μια προβολή λίστας. Θέλω τα στοιχεία αναλυτικά για να εμφανιστεί ως μια ένθετη προβολή λίστας όταν επιλέγετε ένα στοιχείο στην αρχική λίστα. Δεν μπορώ να φαίνεται να καταλάβω πώς να πάρει τις δεσμευτικές να εργαστούν δεδομένων.

Εδώ είναι αυτό που έχω μέχρι στιγμής, (το πρόβλημα είναι η {Binding Path=FK_History_HistoryItems}):

<ListView Name=lstHistory ItemsSource={Binding Source={StaticResource History}} SelectionChanged=lstHistory_SelectionChanged>
    <ListView.View>
        <GridView>
            <GridViewColumn DisplayMemberBinding={Binding Path=Name} Header=Name Width=100 />
            <GridViewColumn DisplayMemberBinding={Binding Path=Description} Header=Description Width=150 />
            <GridViewColumn DisplayMemberBinding={Binding Path=Total, Converter={StaticResource moneyConvert}} Header=Total Width=100 />
            <GridViewColumn DisplayMemberBinding={Binding Converter={StaticResource categoryAggregate}} Header=Categories Width=100 />
        </GridView>
    </ListView.View>
    <ListView.Resources>
        <Style TargetType={x:Type ListViewItem}>
            <Setter Property=Template>
                <Setter.Value>
                    <ControlTemplate TargetType={x:Type ListViewItem}>
                        <Border>
                            <StackPanel>
                                <Border Name=presenter
                                        Background={TemplateBinding Background}
                                        BorderBrush={TemplateBinding BorderBrush}
                                        BorderThickness={TemplateBinding BorderThickness}
                                        Padding={TemplateBinding Padding}>
                                    <GridViewRowPresenter />
                                </Border>
                                <Border Name=details Visibility=Collapsed Margin=5
                                        BorderBrush=Black BorderThickness=2>
                                    <StackPanel Margin=5>
                                        <ListView ItemsSource={Binding Path=FK_History_HistoryItems}>
                                            <ListView.View>
                                                <GridView>
                                                    <GridViewColumn DisplayMemberBinding={Binding Path=Ammount} Header=Ammount Width=100 />
                                                    <GridViewColumn DisplayMemberBinding={Binding Path=Category} Header=Category Width=100 />
                                                </GridView>
                                            </ListView.View>
                                        </ListView>
                                    </StackPanel>
                                </Border>
                            </StackPanel>
                        </Border>
                        <ControlTemplate.Triggers>
                            <Trigger Property=IsSelected Value=True>
                                <Setter TargetName=details Property=Visibility Value=Visible />
                                <Setter TargetName=presenter Property=Background Value=Navy/>
                                <Setter TargetName=presenter Property=TextElement.Foreground Value=White />
                            </Trigger>
                        </ControlTemplate.Triggers>
                    </ControlTemplate>
                </Setter.Value>
            </Setter>
        </Style>
    </ListView.Resources>
</ListView>
Δημοσιεύθηκε 09/12/2008 στις 19:03
πηγή χρήστη
Σε άλλες γλώσσες...                            


3 απαντήσεις

ψήφοι
1

Αν κατάλαβα καλά την ερώτησή σας θα πρέπει να συνδεθεί με την SelectedItem της αρχικής λίστας:

<ListView ItemsSource="{Binding ElementName=lstHistory, Path=SelectedItem}">

Και στη συνέχεια, ορίστε την datatemplate / προβολή, όπως απαιτείται. Εάν δεν θέλετε να χρησιμοποιήσετε ElementName για τη σύνδεση μπορείτε επίσης να χρησιμοποιήσετε RelativeSource αλλά θεωρώ ElementName είναι πιο εύκολο να διαβάσει και να καταλάβει.

Απαντήθηκε 09/12/2008 στις 20:27
πηγή χρήστη

ψήφοι
0

Για να πάρετε το έναυσμα για την εργασία, θα πρέπει να ρυθμίσετε το ControlTemplate TargetType:

<ControlTemplate TargetType="{x:Type ListViewItem}">

Χωρίς το TargetType να καθορίζεται (ως δυνατότητα επιλογής τύπου), η απόδοση XAML θα πρέπει να συγχέεται ...

Απαντήθηκε 07/10/2015 στις 14:50
πηγή χρήστη

ψήφοι
0

Θα πρέπει να αλλάξετε γραμμή πρόβλημά σας στα ακόλουθα:

<ListView ItemsSource="{Binding FK_History_HistoryItems}">

Με την αλλαγή αυτή, ο έλεγχος λειτουργεί όμορφα. Έχω ήδη εργάζονται σε κάτι παρόμοιο χωρίς αποτέλεσμα. Μου αρέσει πολύ το έργο σας σε αυτό.

Απαντήθηκε 31/01/2009 στις 00:33
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more