更改LongListSelector元素上的按钮的图像

时间:2014-12-05 19:43:59

标签: c# xaml windows-phone-8.1

我有这个longListSelector:

          <phone:LongListSelector
                        x:Name="ListaMensajesTablon"
                        ItemsSource="{Binding Mensajes}"
                        ItemTemplate="{StaticResource MensajesTablonDataTemplate}"
                        SelectionChanged="MensajeTablonSelected"/>

使用此ItemTemplate:

       <DataTemplate x:Key="MensajesTablonDataTemplate">
          <Grid>
              <Button MaxHeight="85" MaxWidth="95" MinHeight="85" MinWidth="95" Grid.Column="1" HorizontalAlignment="Right" VerticalAlignment="Center"  Click="Button_Click" BorderBrush="Transparent">
                        <Button.Content>
                            <Image x:Name="imagenFav" MaxHeight="75" MaxWidth="75" MinHeight="75" MinWidth="75" 
                                   Source="{Binding userFav, Converter={StaticResource BoolToHeart}}" VerticalAlignment="Center" HorizontalAlignment="Center"/>
                        </Button.Content>
              </Button>
          </Grid>
       </DataTemplate>

这个代码隐藏:

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        botonFavPulsado = true;
        botonAmor = (Button)sender;
    }


    private void MensajeTablonSelected(object sender, SelectionChangedEventArgs e)
    {
        if(botonFavPulsado)
        {                
            var myItem = ((LongListSelector)sender).SelectedItem as MensajeTablon;

            if(botonAmor!=null)
            {
                if (myItem.userFav)
                {
                    botonAmor.Content = new Image
                        {
                            Source = new BitmapImage(new Uri("icons/heart.red.png", UriKind.Relative))
                        };
                }
                else
                {
                    botonAmor.Content = new Image
                    {
                        Source = new BitmapImage(new Uri("icons/heart.white.png", UriKind.Relative))
                    };
                }
            }
            botonFavPulsado = false;

          }
        }

我想要做的是当你按下LongListSelector元素内的按钮时更改图片。我第一次按下按钮进入功能Button_Click然后进入功能MensajeTablonSelected功能并更改图像(好)。问题是我第二次按下相同的按钮进入功能Button_Click功能并且没有输入功能MensajeTablonSelected

恢复:LongItemSelector中的ToggleButton第一次工作但不是第二次工作

1 个答案:

答案 0 :(得分:0)

问题解决了:

 private void MensajeTablonSelected(object sender, SelectionChangedEventArgs e)
 {
    if (((LongListSelector)sender).SelectedItem != null)
    if(botonFavPulsado)
    {                
        var myItem = ((LongListSelector)sender).SelectedItem as MensajeTablon;

        if(botonAmor!=null)
        {
            if (myItem.userFav)
            {
                botonAmor.Content = new Image
                    {
                        Source = new BitmapImage(new Uri("icons/heart.red.png", UriKind.Relative))
                    };
            }
            else
            {
                botonAmor.Content = new Image
                {
                    Source = new BitmapImage(new Uri("icons/heart.white.png", UriKind.Relative))
                };
            }
        }
        botonFavPulsado = false;
        //Unselect ITEM
        ((LongListSelector)sender).SelectedItem = null;
      }
    }

此解决方案存在问题,再次调用MensajeTablonSelected函数。