2010-10-17 184 views
4

XAML的論點,我有以下XAML:的Click事件

<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需要通過 「{綁定名稱}」 作爲參數。

我該怎麼做? 我正在開發的Windows Phone 7的

回答

3

我認爲你需要使用一個命令,而不是一個按鈕單擊事件要做到這一點,所以你可以這樣做:

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

然後您就需要公開ButtonClickCommand作爲ICommand對象。

如何做到這一點將取決於其他應用程序的結構。例如。使用MVVM模式等。

+0

在'Button'類型中找不到屬性'Command'。參數 – 2010-10-17 14:10:49

+0

也是如此。這很奇怪。我只是把你的代碼放到一個簡單的WPF窗口中,我可以將Command和CommandParameter屬性添加到Button中。看着MSDN,它們似乎也適用於Silverlight,所以這不成問題。 – 2010-10-17 14:34:52

+1

這裏是MSDN頁面:http://msdn.microsoft.com/en-us/library/system.windows.controls.primitives.buttonbase.command(v = VS.100).aspx – 2010-10-17 14:35:32

5

pc上的另一種選擇是從click事件參數中獲取DataContext,例如,

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

這可能適用於電話以及?