我有以下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>
Run Code Online (Sandbox Code Playgroud)
但是,btnJeans_Click需要传递"{Binding Name}"作为参数.
我该怎么做?我正在为Windows Phone 7开发.
PC上的替代方案是从click事件args获取DataContext,例如
private void Button_Click(object sender, RoutedEventArgs e)
{
var record = ((Button)e.OriginalSource).DataContext;
MessageBox.Show("Do something with " + record.ToString());
}
Run Code Online (Sandbox Code Playgroud)
这可能也适用于手机?
我认为您需要使用命令而不是按钮单击事件来执行此操作,以便您可以执行以下操作:
<Button Name="btnJeans" Command="{Binding Path=ButtonClickCommand}" CommandParameter="{Binding Name}">
...
</Button>
Run Code Online (Sandbox Code Playgroud)
然后,您需要将 ButtonClickCommand 公开为 ICommand 对象。
如何执行此操作取决于应用程序其余部分的结构。例如使用 MVVM 模式等。