WPF ListView不呈现模板

时间:2009-07-06 23:38:13

标签: c# wpf listview datatemplate

我有一个ListView我填充了ObservableCollection中的项目。一切顺利,直到我决定添加第二个列表视图来过滤一些项目。

我现在设置的是主列表视图将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>

编辑: 当我调试时,listview在绑定中有适当的项目(例如,CurrentItem显示应该用于绑定的正确对象),但由于某种原因它们没有出现。

1 个答案:

答案 0 :(得分:0)

我很蠢。使用我的主数据模板的列上的Width =“Auto”似乎没有一直在扩散。设置宽度= 100显示该部件。也许这是父母没有一直在扩散。