2011-09-05 13 views
5

मैं इस पंक्ति पर कार्रवाई करने के लिए ग्रिड व्यू की प्रत्येक पंक्ति में एक बटन रखना चाहता हूं। मैं क्लिक प्राप्त करने में सक्षम हूं, लेकिन मैं यह कैसे निर्धारित करूं कि यह बटन किस पंक्ति से संबंधित है?ग्रिड व्यू में बटन: मुझे कैसे पता चलेगा कि कौन सा आइटम?

 <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

डब्ल्यूपीएफ को नहीं जानते लेकिन एएसपीनेट में ऑनकॉमंड इवेंट है जिसे आप कमांडनाम और कमांड टाइप तर्क निर्दिष्ट कर सकते हैं जो हैंडलर के ईवेंट में पास हो जाते हैं। –

उत्तर

5

क्लिक किया Button की DataContext आइटम आप

अपने स्रोत वर्ग मानते हुए देख रहे हो जाएगा Calibration

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

एक और तरीका है एक Command बजाय घटना क्लिक करें उपयोग करने के लिए है । यह सभी नेट पर पाया जा सकता है आप CommandParameter की तरह इस के इस

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

उदाहरण के लिए बाध्य करने की अनुमति होगी यहाँ एक है: Pass Command Parameter to RelayCommand

+0

धन्यवाद, ठीक वही जो मैं खोज रहा था। – MTR

0

अपने ग्रिड व्यू पर एक ऑन-सिलेटेड इंडेक्स चेंज किए गए ईवेंट का उपयोग करने के बारे में कैसे?

public void Grid_selectedIndexChanged(Object sender, EventArgs e) 
{ 
    GridViewRow row = Grid.SelectedRow; 
} 
संबंधित मुद्दे

 संबंधित मुद्दे