MTR*_*MTR 5 c# wpf binding 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
}
Run Code Online (Sandbox Code Playgroud)
是否有某种方法可以将此行上的项绑定到RoutedEventArgs?
该DataContext所点击的Button将是你正在寻找的项目
假设您的源类是 Calibration
private void OnStart(object sender, RoutedEventArgs e)
{
Button button = sender as Button;
Calibration clickedCalibration = button.DataContext as Calibration;
// ...
}
Run Code Online (Sandbox Code Playgroud)
另一种方法是使用Command而不是Click事件.这将允许您CommandParameter像这样绑定
<Button Command="{Binding MyCommand}"
CommandParameter="{Binding}"/>
Run Code Online (Sandbox Code Playgroud)
这个例子可以在网上找到,这里有一个:将命令参数传递给RelayCommand