Передача значения из Button в WPF ListView - PullRequest
3 голосов
/ 01 октября 2010

У меня есть коллекция, которую я показываю в WPF Listview.У меня будет кнопка редактирования в каждой строке, и мне нужно будет передать идентификатор другому элементу управления на экране при нажатии.Я не собираюсь редактировать на месте, поэтому я не использую Gridview.

Как передать этот идентификатор другому контролю?

В настоящее время мой XAML выглядит следующим образом.

<ListView Name="uxPackageGroups" ItemsSource="{Binding PackageGroups}" BorderThickness="0" Grid.Row="6" Grid.Column="1" Width="300" BorderBrush="#FF0000E8">
<ListView.ItemTemplate>
    <DataTemplate>
        <StackPanel Name="uxStackPanel" Orientation="Horizontal">
            <Button Content="Edit" Width="50" />
            <Label Content="{Binding Name}" Height="20" Margin="0" Padding="0"/>
        </StackPanel>
    </DataTemplate>
</ListView.ItemTemplate>

Этот новичок WPF заранее благодарит вас!

Ответы [ 3 ]

4 голосов
/ 01 октября 2010

Вы используете привязку данных, так что это довольно просто. В коде, который реагирует на нажатие кнопки, получите ссылку на кнопку и проверьте ее свойство DataContext. Это будет иметь ссылку на базовый объект, с которым вы его связали.

protected void EditButton_Click(object sender, RoutedEventArgs e)
{
   TextBox textBox = (TextBox)sender;

   int id =  ((TheBounObjectType)textBox.DataContext).Id;
}
3 голосов
/ 01 октября 2010

Если вы не хотите заходить так далеко, как создание команд, вы можете использовать свойство «Tag» кнопки:

<Button Content="Edit" Width="50" Tag={Binding} />

или

<Button Content="Edit" Width="50" Tag={Binding ID} />

и затем обратитесь к свойству тега кнопки в вашем обработчике событий.

2 голосов
/ 01 октября 2010

Параметры команды хороши для этого:

 <Button Content="Edit" Width="50" 
      Command="{some command here}" 
      CommandParameter="{Binding ID}" />

Для части "некоторая команда здесь" убедитесь, что вы объявляете команду .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...