Аргументы XAML для события Click - PullRequest
4 голосов
/ 17 октября 2010

У меня есть следующий XAML:

<Button Name="btnJeans" Click="btnJeans_Click" Padding="-1" >
    <StackPanel Orientation="Horizontal" Margin="0,0,0,17" Name="jeansItem">
        <!--Replace rectangle with image-->
        <Image Height="119" Width="82" Source="{Binding Image}" Margin="12,0,9,0"/>
        <StackPanel Width="311">                                    
            <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
            <TextBlock Text="{Binding Price}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
        </StackPanel>
    </StackPanel>
</Button>

Однако btnJeans_Click должен передать «{Binding Name}» в качестве аргумента.

Как бы я это сделал? Я занимаюсь разработкой для Windows Phone 7.

Ответы [ 3 ]

5 голосов
/ 20 апреля 2011

Альтернативой на ПК является получение DataContext из аргументов события щелчка, например

private void Button_Click(object sender, RoutedEventArgs e)
    {
      var record = ((Button)e.OriginalSource).DataContext;
      MessageBox.Show("Do something with " + record.ToString()); 
    }

это может быть применимо и к телефону?

3 голосов
/ 17 октября 2010

Я думаю, вам нужно использовать команду вместо события нажатия кнопки, чтобы сделать это, поэтому вы можете сделать:

<Button Name="btnJeans" Command="{Binding Path=ButtonClickCommand}" CommandParameter="{Binding Name}">
    ...
</Button>

Затем вам нужно будет выставить ButtonClickCommand как объект ICommand.

Как это сделать, будет зависеть от структуры остальной части вашего приложения.Например, используя шаблон MVVM и т. Д.

0 голосов
/ 26 ноября 2018

XAML позволяет вам установить BindingContext кнопки.

См. Пример ниже, который относится к свойству Id объекта, который будет передан в обработчик щелчка.

    <Button Name="btnJeans" Click="btnJeans_Click" Padding="-1" BindingContext="{Binding Id}">
<StackPanel Orientation="Horizontal" Margin="0,0,0,17" Name="jeansItem">
    <!--Replace rectangle with image-->
    <Image Height="119" Width="82" Source="{Binding Image}" Margin="12,0,9,0"/>
    <StackPanel Width="311">                                    
        <TextBlock Text="{Binding Name}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/>
        <TextBlock Text="{Binding Price}" TextWrapping="Wrap" Margin="12,-6,12,0" Style="{StaticResource PhoneTextSubtleStyle}"/>
    </StackPanel>
</StackPanel>

Затем вы можете получить доступ к свойству, используя объект BindingContext отправителя.В этом примере вы можете обратиться к свойству id в обработчике.

    private void btnJeans_Clicked(object sender, EventArgs e)
    {
        var button = sender as Button;
        var id = button.BindingContext;

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