2011-09-05 6 views
5

GridViewの各行にこの行の操作を実行するボタンが必要です。私はクリックを得ることができますが、このボタンがどの行に属しているかをどのように判断するのですか?私は現時点で持っている何GridViewのボタン:どのアイテムを知ることができますか?

はこれです:

 <ListView ItemsSource="{Binding Calibrations}"> 
     <ListView.View> 
      <GridView> 
       <GridView.Columns> 
        <GridViewColumn Header="Voltage [kV]" Width="70" DisplayMemberBinding="{Binding Voltage}" /> 
        <GridViewColumn Header="Filter" Width="100" DisplayMemberBinding="{Binding FilterName}" /> 
        <GridViewColumn Header="Calibration Date" Width="100" DisplayMemberBinding="{Binding CalibrationDate}" /> 
        <GridViewColumn Header="Calibration" Width="60"> 
         <GridViewColumn.CellTemplate> 
          <DataTemplate> 
           <Button Content="Start" Click="OnStart" /> 
          </DataTemplate> 
         </GridViewColumn.CellTemplate> 
        </GridViewColumn> 
       </GridView.Columns> 
      </GridView> 
     </ListView.View> 
    </ListView> 


     private void OnStart(object sender, RoutedEventArgs e) 
    { 
     // how do I know, on which item this button is 
    } 

は多分そこRoutedEventArgsに、この行の項目をバインドするためにいくつかの方法は何ですか?

+0

何グリッド選択した項目のプロパティをチェックについては? –

+0

WPFはわかりませんが、asp.netには、ハンドラのeventargsに渡されるCommandNameおよびCommandType引数を指定できるOnCommandイベントがあります。 –

答えて

5

DataContextはあなたのソースクラスが別の方法は、Clickイベントの代わりにCommandを使用することですCalibration

private void OnStart(object sender, RoutedEventArgs e) 
{ 
    Button button = sender as Button; 
    Calibration clickedCalibration = button.DataContext as Calibration; 
    // ... 
} 

であると仮定すると、

を探しているアイテムになります。これは、こののCommandParameter

<Button Command="{Binding MyCommand}" 
     CommandParameter="{Binding}"/> 

このような例は、すべてネット上で見つけることができますが結合できるようになる、ここでは1です: Pass Command Parameter to RelayCommand

+0

ありがとう、私が探していたもの。 – MTR

0

GridViewでOnSelectedIndexChanged changedイベントを使用することはどうですか?クリックButton

public void Grid_selectedIndexChanged(Object sender, EventArgs e) 
{ 
    GridViewRow row = Grid.SelectedRow; 
} 
関連する問題