Иерархические связывания данных с вложенным ListViews в WPF

голоса
1

У меня есть некоторые данные, которые есть таблица подробно. Я хочу, чтобы данные, которые будут представлены в ListView. Я хочу, чтобы данные детали появляться в виде вложенного ListView при выборе элемента в исходном списке. Я не могу показаться, чтобы выяснить, как получить данные, обязательные для работы.

Вот что я до сих пор (проблема есть {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

Для того, чтобы получить Trigger к работе, Вам нужно будет установить 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