16

私は次のケースがあります:

Window
  |_Grid
      |_ListView (MainProductGrid)
           |_View
               |_GridView
                    |_GridViewColumn
                             |_CellTemplate
                                     |_DataTemplate
                                             |_Label (LabelID)

今、私は ListView の行のインデックスを LabelID に表示したいと考えています。だから私は次のようにしました:

<ListView ItemsSource="{Binding Path=ProductItems}" AlternationCount="{Binding Path=ProductItems.Count}">
...

ラベルについては、次のものがあります。

<Label x:Name="LabelID" 
       Content="{Binding RelativeSource={RelativeSource Mode=TemplatedParent}, 
       Path=(ListView.AlternationIndex)}"/>

しかし、LabelIDは0しか表示していないので、TemplatedParentはListViewコントロールを指していないと思います..私の場合はListViewである「上の親」を指すようにバインディングを修正するにはどうすればよいですか?

前もって感謝します

################

更新: ここに完全な xaml があります ...

<Grid x:Name="mainGrid">
        <ListView  ItemsSource="{Binding Path=ProductItems}" AlternationCount="{Binding Path=ProductItems.Count}" x:Name="MainProductGrid">
                <ListView.View>
                    <GridView AllowsColumnReorder="False">
                    <GridViewColumn x:Name="gvc" Header="id" Width="auto">
                        <GridViewColumn.CellTemplate>
                            <DataTemplate>
                                <Label Content="{Binding (ListView.AlternationIndex),RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}}"/>
                            </DataTemplate>
                        </GridViewColumn.CellTemplate>
                    </GridViewColumn>

                    <GridViewColumn Header="Product name" DisplayMemberBinding="{Binding Path=ProductName}"  Width="auto" />
                    </GridView>
                </ListView.View>
            </ListView>
    </Grid>
4

3 に答える 3

2

少なくともあなたの場合、モードを介してプロパティにアクセスするDataTemplateことはできません。TemplatedParentこれは、(データ バインドされた要素が存在する) テンプレートが適用される要素を参照します。[...] リンクDataTemplateでしか見たことがないので、 で使用できるかどうかはControlTemplatesわかりませんが、ドキュメントでは別の方法で説明されていないため...

あなたができることは、を見つけようとすることですAncestor。例えば

<Label Content="{Binding AlternationIndex, 
       RelativeSource={RelativeSource FindAncestor, AncestorType={x:Type ListView}}" ... />

まだ使ってDataTemplatesないので無保証です。

于 2013-04-03T14:00:26.977 に答える