2011-03-19 103 views
0

我试着去创建一个GridView的WPF形式有“按钮栏”,这样的:通过指定的DataTemplate列http://rghost.ru/4832825.view事件处理在WPF的形​​式动态创建按钮

我创建“按钮栏” 。

现在我遇到了一个问题:我需要写按钮事件处理程序,但我不明白,如何确定列中按下哪个按钮?我如何确定这一点,而不使用按钮的标签字段?

这是我的代码。 XAML:

<Window x:Class="ListViewSample.Window1" 
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
Title="Window1" Height="317" Width="603"> 

<Window.Resources> 
    <DataTemplate x:Key="ButtonInColumn"> 
     <Button Content="Test" Height="20" Name="button1" Width="40" Click="MenuItem_Click"/> 
    </DataTemplate> 

</Window.Resources> 

<Grid> 
    <ListView Margin="10,75,12,38" Name="ListView1"> 
     <ListView.View> 
      <GridView AllowsColumnReorder="true" ColumnHeaderToolTip="Authors"> 
       <!-- Add GridView Columns --> 
       <GridViewColumn Header="Name" Width="120" DisplayMemberBinding="{Binding Path=Name}"/> 
       <GridViewColumn Header=" Age" Width="60" CellTemplate="{StaticResource ButtonInColumn}" /> 
       <GridViewColumn Header=" Book" Width="250" DisplayMemberBinding="{Binding Path=Book}" /> 
       <GridViewColumn Header=" MVP" Width="50" DisplayMemberBinding="{Binding Path=Mvp}" /> 
       <GridViewColumn Header=" 123" Width="50" DisplayMemberBinding="{Binding Path=q123}" /> 
      </GridView> 
     </ListView.View> 
    </ListView> 
</Grid> 
</Window> 

p.s.对不起我的英文不好

回答

2

在事件处理程序中你有object Sender。该发送者是按钮,你可以做到以下几点:

var btn = sender as Button; 
var dataItem = btn.DataContext as <the original data item class> 

这种方式u必须与原始数据项的引用,并可以从那里推断什么..