下面的代码位于.net 4中的WPF中,它显示了一个开头为空的网格。当我添加元素时,它将分别显示带有进度条的行和最后两列中的“发送”按钮。当我再添加一行时,会出现另一个进度条和按钮。但是如果我单击按钮,则所有按钮都使用相同的事件处理程序。如何使每个进度条和按钮在行中不同?
<Window x:Class="ObservableCollection.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Grid>
<DataGrid Name="DataGrid" ItemsSource="Binding DataGrids" AutoGenerateColumns="False" RowHeight="30"
ColumnWidth="100" ColumnHeaderHeight="50" HeadersVisibility="Column" AlternatingRowBackground="LightBlue"
CanUserAddRows="False" Background="Transparent" RowBackground="Transparent" BorderBrush="Gray"
CellStyle="{StaticResource Body_Conternt_DataGrid_Centering}"
IsReadOnly="True" Margin="49,66,45,62" Opacity="1" >
<DataGrid.Columns>
<DataGridTextColumn Width="*" Header="UID" Binding="{Binding Uid}" />
<DataGridTextColumn Width="*" Header="Type" Binding="{Binding Type}" />
<DataGridTextColumn Width="*" Header="Channel Type" Binding="{Binding ChannelType}" />
<DataGridTextColumn Width="*" Header="Certificate" Binding="{Binding Certificate}" />
<DataGridTextColumn Width="*" Header="Life Cycle State" Binding="{Binding LifeCycle}" />
<DataGridTextColumn Width="*" Header="Status" Binding="{Binding Status}" />
<DataGridTextColumn Width="*" Header="Image UID" Binding="{Binding ImageUid}" />
<DataGridTemplateColumn Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<ProgressBar Height="20" Value="{Binding Progress}"></ProgressBar>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
<DataGridTemplateColumn Width="*">
<DataGridTemplateColumn.CellTemplate>
<DataTemplate>
<Button Name="btnSend" Click="btnSend_Click">Send</Button>
</DataTemplate>
</DataGridTemplateColumn.CellTemplate>
</DataGridTemplateColumn>
</DataGrid.Columns>
</DataGrid>
</Grid>
</Window>
答案 0 :(得分:3)
我正在考虑将Tag属性绑定到您尝试发送的任何内容的唯一键
<Button Tag="{Binding ID}>
并在您的发送事件中获取标记值..
var button = sender as Button;
var tag = button.Tag;
答案 1 :(得分:2)
此链接可能很有用,其中描述了如何在单击datagrid列中的按钮时获取rownumber
WPF DataGrid - Button in a column, getting the row from which it came on the Click event handler