2011-03-19 101 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必須與原始數據項的引用,並可以從那裏推斷什麼..