Nested ListViews

Hello all,

My company is currently researching .NET 3.0 using WPF as a potential platform for our MES solution. We have already implemented it in a browser-based interface, but we're finding that the latency and maintenance issues are becoming bigger problems than we originally anticipated - so we're now looking into a smart client as a solution.

Things are looking good so far, but I've run into a little snag. I'm trying to display some hierarchical data (routing/bom information) using nested listviews, which I was able to get to work, but only the first time. E.g., I set the DataContext to one production order object, and it works, but when I set the DataContext to a new order object the top-level listview is updated, but the nested listviews don't get displayed.

Here's the XAML code in question:


<ListView x:Name="operationsListView" ItemsSource="{Binding Path=Operations}">

<ListView.Template>

<ControlTemplate TargetType="ListView">

<ItemsPresenter />

</ControlTemplate>

</ListView.Template>

<ListView.ItemContainerStyle>

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

<Setter Property="Template">

<Setter.Value>

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

<Border BorderThickness="0,0,0,1" BorderBrush="Black">

<StackPanel>

<GridViewRowPresenter />

<ListView ItemsSource="{Binding Path=BillOfMaterials}" HorizontalAlignment="Center" Style="{StaticResource HiddenEmptyListViewStyle}" ItemContainerStyleSelector="{StaticResource AlternatingBackgroundListViewItemStyleSelector}">

<ListView.View>

<GridView ColumnHeaderContainerStyle="{StaticResource HiddenColumnHeaderContainerStyle}">

<GridViewColumn DisplayMemberBinding="{Binding Path=Material.Number}"/>

<GridViewColumn DisplayMemberBinding="{Binding Path=Material.Description, Converter={StaticResource titleCaseConverter}}"/>

<GridViewColumn DisplayMemberBinding="{Binding Path=Quantity}"/>

<GridViewColumn DisplayMemberBinding="{Binding Path=UnitOfMeasure, Converter={StaticResource unitOfMeasureConverter}}"/>

<GridViewColumn>

<GridViewColumn.CellTemplate>

<DataTemplate>

<Button Content="{Binding Path=Material.Drawing.Number}" Style="{StaticResource LinkButtonStyle}"/>

</DataTemplate>

</GridViewColumn.CellTemplate>

</GridViewColumn>

</GridView>

</ListView.View>

</ListView>

</StackPanel>

</Border>

</ControlTemplate>

</Setter.Value>

</Setter>

</Style>

</ListView.ItemContainerStyle>

<ListView.View>

<GridView ColumnHeaderContainerStyle="{StaticResource HiddenColumnHeaderContainerStyle}">

<GridViewColumn>

<GridViewColumn.CellTemplate>

<DataTemplate>

<CheckBox VerticalAlignment="Center"/>

</DataTemplate>

</GridViewColumn.CellTemplate>

</GridViewColumn>

<GridViewColumn>

<GridViewColumn.CellTemplate>

<DataTemplate>

<TextBlock FontWeight="Bold" Text="{Binding Path=Number}"/>

</DataTemplate>

</GridViewColumn.CellTemplate>

</GridViewColumn>

<GridViewColumn DisplayMemberBinding="{Binding Path=Description, Converter={StaticResource titleCaseConverter}}"/>

</GridView>

</ListView.View>

</ListView>

What am I doing wrong Is there a better way to do nested ListViews like this



Answer this question

Nested ListViews

  • Nested ListViews