2012-02-07 51 views
3

我要顯示一個項目的當前指數在一個ItemsControl:如何獲得一個項目的索引,一個ItemsControl

<TextBlock Foreground="#ffffffff" Margin="8,8,2,2" TextWrapping="Wrap" Text="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, Path=Items.CurrentIndex}" Grid.Column="0" Grid.Row="0" HorizontalAlignment="Right"/> 

這是我最好的猜測。我遇到了很多可能的解決方案,但使用alternationcount(在Silverlight中不支持,因爲它似乎)或其他沒有給我一個結果。

ItemsControl的是這樣的:

<ItemsControl Grid.Column="0" Grid.ColumnSpan="3" HorizontalAlignment="Stretch" Grid.Row="6" ItemsSource="{Binding Alternatives, Mode=TwoWay}" ></ItemsControl> 

綁定到ItemsControl的名單是一些屬性的簡單對象。

我真的很喜歡在XAML中這樣做,因爲我們在很多頁面上重複使用該對象。

任何好的建議將是偉大的。

PS:我不希望用戶交互後的索引,它應該自動檢索。

+0

http://stackoverflow.com/questions/4333807/how-to-get-listbox-selected-index這是一個類似的問題,雖然它使用列表框 – Marshal 2012-02-08 08:02:40

+0

@Marshal:獲取索引shouldn'從互動中獲得,我想索引,所以我可以枚舉項目控件 – Terry 2012-02-08 08:24:09

回答

0

如果你想要項目控件中項目的索引 - 如果有某種選擇對我來說只是有意義的。但itemsscontrol沒有選擇器,所以沒有選擇,所以沒有選擇更改事件。所以如果你想要一些選擇採取列表框

一件事

<ItemsControl ItemsSource="{Binding Alternatives, Mode=TwoWay}" ></ItemsControl> 

模式=雙向是沒有意義的,導致你的itemsscontrol永遠不會設置下劃線源。

編輯:我只是假設你想要從你的評論。您可以使用ICollectionView遍歷您的項目。但你的Itemscontrol當然不能顯示這個。但你可以改變項目本身以顯示迭代

ICollectionView view = CollectionViewsource.GetDefaultView(Alternatives); 
view.CurrentChanged += (s,a) => 
{ 
    var current = this.view.CurrentItem; 
    //to stuff with your current item here 
}; 

其他地方要遍歷

view.MoveCurrentToNext(); 

你應該處理第一和最後一個項目以及東西太多。

+0

中顯示的項目錯過了你的提交。你的itemscontrol應該發生什麼?沒有選擇。你想讓你的物品數據表顯示選擇? – blindmeis 2012-02-08 10:12:53

+0

不,在itemscontrol中我有一個datatemplate,它顯示綁定到它的對象的一些數據。一些額外的信息是列表中的某個數字。假設我有20個項目綁定到itemscontrol:我想顯示每個項目的索引,並將其顯示在文本塊中。 – Terry 2012-02-13 07:37:32

相關問題