使用 WPF 的网格中的按钮数组
Posted
技术标签:
【中文标题】使用 WPF 的网格中的按钮数组【英文标题】:array of buttons in grid using WPF 【发布时间】:2012-04-11 16:04:07 【问题描述】:下面的代码在 .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>
【问题讨论】:
【参考方案1】:我正在考虑将 Tag 属性绑定到您要发送的任何内容的唯一键,
<Button Tag="Binding ID>
并在您的发送事件中取回标签值..
var button = sender as Button;
var tag = button.Tag;
【讨论】:
【参考方案2】:此链接可能很有用,其中描述了单击数据网格列中的按钮时如何获取行号
WPF DataGrid - Button in a column, getting the row from which it came on the Click event handler
【讨论】:
以上是关于使用 WPF 的网格中的按钮数组的主要内容,如果未能解决你的问题,请参考以下文章