2009-07-06 242 views
1

我有一个ListView,我填充ObservableCollection项目。所有工作都很好,直到我决定添加第二个列表视图来过滤一些项目。WPF ListView不呈现模板

我现在设置的是,主listview有ItemGroup对象作为渲染项目,显示的项目是项目组中的第一个。设想一个带有存储桶的哈希表,并且该列表上呈现的项目是该组中最新的项目。

我有一个按钮,点击后会显示另一个列表视图,其中包含来自该“桶”的所有项目。但是,我在新的列表视图中获取的是项目的空白条目。我看到他们的物品背景,但celltemplate似乎是空的。

我唯一的猜测是有一个参考问题,因为有些项目已经在另一个ItemSource

我附上截图:

issue

这里是我的DataTemplate

<DataTemplate x:Key="ResultListGroupViewCellTemplate"> 
     <!--<DockPanel>--> 
     <Grid Width="Auto" Margin="0,5,5,5" ShowGridLines="False"> 
      <Grid.ColumnDefinitions> 
       <ColumnDefinition Width="30"/> 
      </Grid.ColumnDefinitions> 
      <Grid.RowDefinitions> 
       <RowDefinition /> 
      </Grid.RowDefinitions> 

      <StackPanel Grid.Column="0"> 
       <Image Margin="2" Source="{Binding Path=StrengthImage}" 
        Height="20" Width="20" HorizontalAlignment="Left" /> 
       <TextBlock Text="{Binding Path=AddedDate}" Margin="0,3,0,0" 
           TextTrimming="CharacterEllipsis" VerticalAlignment="Center" FontFamily="Tahoma" FontSize="10" FontStyle="Italic" HorizontalAlignment="Left" /> 
      </StackPanel> 

     </Grid> 


     <!--</DockPanel>--> 
    </DataTemplate> 

下面是我设置的绑定(MatchApiObject的是用于在上述DataTemplate绑定的对象):

groupViewCollection = new ObservableCollection<MatchApiObject>(m.GroupList.OrderBy(mi => mi.AddedDate)); 

groupViewListView.DataContext = groupViewCollection; 

而且groupViewListView本身:

<ListView Name="groupViewListView" Foreground="#FF333333" 
       ItemContainerStyle="{StaticResource ListViewMatchItemStyleNotSelected}" 
       SelectionMode="Single" 
       ItemsSource="{Binding}" 
       BorderThickness="0" 
       SelectionChanged="contactsList_SelectionChanged" 
       AlternationCount="2" 
       HorizontalContentAlignment="Stretch" 
       ScrollViewer.HorizontalScrollBarVisibility="Disabled" 
       > 
    <ListView.View> 
     <GridView x:Name="groupViewListViewGridView" AllowsColumnReorder="False"> 
      <GridView.ColumnHeaderContainerStyle> 
       <Style TargetType="GridViewColumnHeader"> 
        <Setter Property="Visibility" Value="Collapsed" /> 
       </Style> 
      </GridView.ColumnHeaderContainerStyle> 
      <GridViewColumn CellTemplate="{StaticResource StrengthValMatchColumnCellTemplate}" Width="0" Header="Strength" /> 
      <GridViewColumn CellTemplate="{StaticResource DateMatchColumnCellTemplate}" Width="0" Header="Date" /> 

      <!--<GridViewColumn CellTemplateSelector="{StaticResource myMatchListItemTemplateSelector}" Width="Auto" Header="Result" />--> 
      <GridViewColumn CellTemplate="{StaticResource ResultListGroupViewCellTemplate}" Width="Auto" Header="Result" /> 
     </GridView> 
    </ListView.View> 
</ListView> 

编辑: 当我调试,列表视图在适当的项目结合(例如,CURRENTITEM表明,应该用于绑定正确的对象),但对于一些他们没有出现的原因。

+0

以多种方式在多个位置显示相同的数据没有问题。你可以发布或给我们更多关于第二个ListView的实际模板的细节吗?它看起来像ItemsSource至少被填充,因为有一个背景,所以这个问题很可能是数据绑定。 – rmoore 2009-07-06 23:44:44

回答

0

我很笨。这似乎是我的主数据模板列上的宽度=“自动”,并没有一直蔓延。设置宽度= 100显示该部分。也许这是父母不会一直传播的。