2014-12-05 2 views
1

У меня есть этот longListSelector:Изменить изображение кнопки, которая находится на элементе в 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

Резюме: ToggleButton в LongItemSelector работает в первый раз, но не второй один

ответ

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 вызывается снова.

+0

Он вызывается дважды, потому что в конце вы снова меняете выбранный элемент. Один раз для клика и один раз для click -> null. –