在 WPF中,ListView我的ListViewItems 由三列組成,第一列是自動增量列,第二列是 a TextBox,最后一列在同一列中包含兩個按鈕(編輯和洗掉)。
我ListView現在看起來如下:
<ListView x:Name="MyListView"
AlternationCount="{Binding pathList.Count}"
ItemsSource="{Binding pathList}"
IsSynchronizedWithCurrentItem="True">
<ListView.View>
<GridView>
<GridViewColumn Header="#" x:Name="LvItemId"
DisplayMemberBinding="{Binding (ItemsControl.AlternationIndex),
RelativeSource={RelativeSource AncestorType=ListViewItem}}"/>
<GridViewColumn Header="Command sentence" Width="350" CellTemplate="{StaticResource NameColumnTemplate}"/>
<GridViewColumn Width="70" Header="Edit / Delete" CellTemplate="{StaticResource AddDelItemTemplate}"/>
</GridView>
</ListView.View>
</ListView>
s下方CellTemplate:
<DataTemplate x:Key="FirstRowTemplate1">
<Grid Width="190">
<Button Content="Add" Command="{Binding Path=DataContext.AddCommand, ElementName=MyListView}"
Width="180"
HorizontalAlignment="Center"/>
</Grid>
</DataTemplate>
<DataTemplate x:Key="NextRowTemplate1">
<TextBox Text="{Binding PathString}"/>
</DataTemplate>
<DataTemplate x:Key="NameColumnTemplate">
<ContentPresenter x:Name="ButtonPresenter"
Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content}"
ContentTemplate="{StaticResource NextRowTemplate1}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Add}" Value="True">
<Setter TargetName="ButtonPresenter"
Property="ContentTemplate"
Value="{StaticResource FirstRowTemplate1}"/>
</DataTrigger>
<DataTrigger Binding="{Binding Add}" Value="False">
<Setter TargetName="ButtonPresenter"
Property="ContentTemplate"
Value="{StaticResource NextRowTemplate1}"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
<DataTemplate x:Key="FirstRowTemplate2"/>
<DataTemplate x:Key="NextRowTemplate2">
<StackPanel Orientation="Horizontal">
<Button Content="Edit" Command="{Binding Path=DataContext.EditCommand, ElementName=MyListView}" CommandParameter="{Binding ElementName=LvItemId, Path=WhatToPutHere}"/>
<Button Content="Delete" Command="{Binding Path=DataContext.DelCommand, ElementName=MyListView}" CommandParameter="{Binding ElementName=LvItemId, Path=WhatToPutHere}"/>
</StackPanel>
</DataTemplate>
<DataTemplate x:Key="AddDelItemTemplate">
<ContentPresenter x:Name="ButtonPresenter"
Content="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content}"
ContentTemplate="{StaticResource NextRowTemplate2}"/>
<DataTemplate.Triggers>
<DataTrigger Binding="{Binding Add}" Value="True">
<Setter TargetName="ButtonPresenter"
Property="ContentTemplate"
Value="{StaticResource FirstRowTemplate2}"/>
</DataTrigger>
<DataTrigger Binding="{Binding Add}" Value="False">
<Setter TargetName="ButtonPresenter"
Property="ContentTemplate"
Value="{StaticResource NextRowTemplate2}"/>
</DataTrigger>
</DataTemplate.Triggers>
</DataTemplate>
單擊編輯或洗掉按鈕時,我想將首先GridViewColumn具有的值作為命令引數傳入ListViewItem。我怎樣才能做到這一點?
例如:
<Button Content="Edit" Command="{Binding Path=DataContext.EditCommand, ElementName=MyListView}" CommandParameter="{Binding ElementName=LvItemId, Path=WhatToPutHere}"/>
<Button Content="Delete" Command="{Binding Path=DataContext.DelCommand, ElementName=MyListView}" CommandParameter="{Binding ElementName=LvItemId, Path=WhatToPutHere}"/>
uj5u.com熱心網友回復:
定義列GridViewColumn本身,它是如何填充的,例如模板、系結或寬度,但它沒有對專案容器生成器生成的任何專案的參考。
如果是第一列,您可以復制附加屬性的系結AlternationIndex:
<Button Content="Edit" Command="{Binding (ItemsControl.AlternationIndex), RelativeSource={RelativeSource AncestorType=ListViewItem}}"/>
<Button Content="Delete" Command="{Binding (ItemsControl.AlternationIndex), RelativeSource={RelativeSource AncestorType=ListViewItem}}"/>
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/443904.html
