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

Nested ListViews