Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

array of buttons in grid using WPF

The code below is in WPF in .net 4, which shows a grid which is empty in the beginning. When I add elements, it will display the row with progress bar and 'send' button in the last two columns respectively. When I add one more row, one more progress bar and button appears. But if I click the button, all button uses same event handler. How can I make each progress bar and buttons in rows different?

<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>
like image 431
SHRI Avatar asked Mar 17 '26 00:03

SHRI


1 Answers

am thinking of binding the Tag property to a unique key of whatever you're trying to send,

<Button Tag="{Binding ID}> 

and on your send event get the tag value back..

var button = sender as Button;
var tag = button.Tag;
like image 159
Alaa.Ali Avatar answered Mar 19 '26 14:03

Alaa.Ali



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!