1

ListViewからのアイテムを入力している がありますObservableCollection。一部のアイテムをフィルタリングするために 2 番目のリスト ビューを追加することにするまで、すべてがうまく機能していました。

私が今セットアップしたのは、メインのリストビューにItemGroupレンダリングされたアイテムとしてオブジェクトがあり、表示されているアイテムがアイテム グループの最初にあるということです。バケットを含むハッシュテーブルを想像してください。リストに表示されるアイテムは、グループ内の最新のアイテムです。

クリックすると、その「バケット」のすべてのアイテムを含む別のリストビューが表示されるボタンがあります。ただし、新しいリストビューに表示されるのは、アイテムの空白のエントリだけです。アイテム スタイルの背景が表示されますが、セル テンプレートが空のように見えます。

私の唯一の推測は、一部の項目が既に別の にあるため、参照の問題があるということですItemSource

スクリーンショットを添付しました:

問題

これが私のもの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 はバインディングに使用する必要がある適切なオブジェクトを示します) が、何らかの理由でそれらが表示されません。

4

1 に答える 1

0

私は愚かだ。メイン データ テンプレートの列の Width="Auto" が全体に広がっていないようです。Width=100 に設定すると、パーツが表示されました。たぶん、親がずっと広がっていないのでしょう。

于 2009-07-08T01:39:54.333 に答える