2013-01-22 34 views
1

我想自動爲添加到GridView的項目編號,最好以不需要將任何屬性添加到ItemsSource中的對象的方式。GridView中的數字項目

我已經嘗試使用ItemContainerStyleTemplate(簡化了您的享受),但我沒有發現任何東西,我可以綁定到,這將使我的當前項目的索引:

<Style x:Key="fooStyle" 
     TargetType="GridViewItem"> 
    <Setter Property="Template"> 
    <Setter.Value> 
     <ControlTemplate TargetType="GridViewItem"> 
     <StackPanel Orientation="Horizontal"> 
      <TextBlock x:Name="numbering" 
        Text="{Binding to what exactly}" /> 
      <ContentPresenter x:Name="contentPresenter" /> 
     </StackPanel> 
     </ControlTemplate> 
    </Setter.Value> 
    </Setter> 
</Style> 

如何你會去確保numberingTextBlock收到列表中的項目號碼?

請注意,這是針對Windows運行時的。

回答

0

我有一個臨時的解決辦法。這不是最佳的,因爲它需要我添加到GridView的項目來實現一個特殊的界面。

public interface INumberedItem : INotifyPropertyChanged 
{ 
    int NumberInList { get; set; } 
} 

public class NumberedGridView : GridView 
{ 
    protected override void OnItemsChanged(object e) 
    { 
     base.OnItemsChanged(e); 
     var i = 1; 
     foreach (var item in Items.OfType<INumberedItem>()) 
     { 
      item.NumberInList = i++; 
     } 
    } 
} 

現在我可以在我的XAML代碼中綁定到NumberInlist

-1

確保在ItemsControl中的「AlternationCount」屬性(在你的情況,GridView控件)設置的東西(不NAN),並使用以下綁定:

<Binding Path="(ItemsControl.AlternationIndex)" RelativeSource="{RelativeSource Mode=TemplatedParent}" Mode="OneWay"/> 
+0

這似乎不適用於Windows應用商店應用程序。 –