массив кнопок в сетке с использованием WPF - PullRequest
3 голосов
/ 28 марта 2012

Код ниже находится в WPF в .net 4, который показывает сетку, которая в начале пуста. Когда я добавляю элементы, в последних двух столбцах будет отображаться строка с индикатором выполнения и кнопкой «Отправить». Когда я добавляю еще одну строку, появляется еще один индикатор и кнопка. Но если я нажимаю кнопку, все кнопки используют один и тот же обработчик событий. Как я могу сделать каждый индикатор и кнопки в строках разными?

<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>

Ответы [ 2 ]

3 голосов
/ 28 марта 2012

думаю связать свойство Tag с уникальным ключом того, что вы пытаетесь отправить,

<Button Tag="{Binding ID}> 

и при вашем событии send верните значение тега ..

var button = sender as Button;
var tag = button.Tag;
2 голосов
/ 28 марта 2012

Эта ссылка может быть полезной, где описано, как вы можете получить число при нажатии на кнопку в столбце таблицы данных

WPF DataGrid - кнопка в столбце, получающая строку, из которой она пришла, в обработчике события Click

...