1

この質問が約 1000 回投稿されていることは知っていますが、問題を解決する解決策が見つかりませんでした。

私はこれで LongListSelector を持っていますItemTemplate:

<DataTemplate x:Key="AddrBookItemTemplate">
  <Grid>
    <Grid.RowDefinitions>
      <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
      <ColumnDefinition Width="*" />
      <ColumnDefinition Width="Auto" />
    </Grid.ColumnDefinitions>
    <TextBlock FontWeight="Bold" Text="{Binding Name}" HorizontalAlignment="Stretch" VerticalAlignment="Center"  Grid.Column="0" Grid.Row="0" />
    <Button x:Name="itembutton" CommandParameter="{Binding ItemID}" Content="{Binding ButtonCaption}" Width="150" HorizontalAlignment="Right" Grid.Column="1" Grid.Row="0" Click="ItemButtonClick"/>
  </Grid>
</DataTemplate>

何が起こるかというと、タイトルに投稿したこの美しいエラー メッセージが表示されるだけです。そして、私には手がかりがありません。なぜですか?

private void ItemButtonClick(object sender, RoutedEventArgs e)
{
  if (sender == this.itemButton) {
    ....
4

1 に答える 1

0

から、DataTemplateこのボタンをまたはのようなコンテナに表示しているように見えListBoxますLongListSelector

つまりitembuttonthis範囲内に が存在しないことを意味します (おそらくまたは のthisいずれUserControlPhoneApplicationPageです): 実際には、それぞれのListBoxItems!

ボタンを見つける別の方法を見つける必要があります。

更新:DataContextボタンの が、それが含まれているリストの項目と一致することがわかるはずです。これがおそらく最も簡単な方法です。ただし、他のすべてが失敗した場合は、Tag提案どおりにプロパティを使用できます。

お気に入り:

private void ItemButtonClick(object sender, RoutedEventArgs e)
{
    var theButton = (Button) sender;
    var myItem = (TypeOfAnObjectInMyList) theButton.DataContext;
    doSomethingWithMyItem(myItem);
于 2013-03-05T16:59:09.933 に答える