0

監視可能なコレクションにバインドされたリストボックスを持つ WPF コントロールがあります。

コレクションは頻繁に変更されるため、アイテムのインデックスを追跡するのは少し面倒です。

画面上の位置/インデックスに応じて、リストボックス内のアイテムの高さが異なる必要があります。

Items[0].Height = 30; 
Items[1].Height = 25;
Items[2...n].Height = 20;

そのため、アイテムの高さはデータに依存しません。

データ項目に dep プロパティを追加して、コレクション内のデータ項目インデックスを計算しようとはしません。

リストボックスアイテムがリストボックスアイテムソースのインデックスを認識できるようにしたいと考えています。

PS私はどんなアイテムコントロールでも生きることができます(必ずしもリストボックスではありません)

それはできますか?

4

1 に答える 1

1

交互行スタイルを使用していない限り、このために交互インデックスを乗っ取ることができます。各項目の ToString と共にインデックスを表示するだけの簡単な例を次に示します。

<ListBox AlternationCount="99999" ItemsSource="{Binding Items}">
    <ListBox.ItemTemplate>
        <DataTemplate>
            <StackPanel>
                <TextBlock Text="{Binding RelativeSource={RelativeSource Mode=FindAncestor, AncestorType={x:Type ListBoxItem}}, Path=(ItemsControl.AlternationIndex)}"/>
                <TextBlock Text="{Binding}"/>
            </StackPanel>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>
于 2013-01-23T03:46:29.243 に答える