1

Windows Phone 앱에 LongListSelector가 있습니다. LLS에는 각 항목에 대한 Image 및 TextBlock이 있습니다. 사용자가 선택을 변경하면 이미지를 어떻게 바꿀 수 있습니까? SelectionChanged 메서드에서 무엇을 써야합니까? XAML 뒤에LongListSelector 또는 SelectionChanged 메서드에서 이미지를 변경하는 방법?

<phone:LongListSelector x:Name="MainLongListSelector" ItemsSource="{Binding Items}" SelectionChanged="MainLongListSelector_SelectionChanged"> 
    <phone:LongListSelector.ItemTemplate> 
      <DataTemplate> 
       <StackPanel Orientation="Horizontal"> 
        <Image Name="PlayPause" Source="/Assets/transport.play.png"/> 
        <StackPanel> 
         <TextBlock Text="{Binding LineOne}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
        </StackPanel> 
       </StackPanel> 
      </DataTemplate> 
    </phone:LongListSelector.ItemTemplate> 
</phone:LongListSelector> 
+0

왜 각 항목마다 다른 이미지가있는 목록을 항목 목록에 표시하지 않습니까? –

+0

그것은 서버로부터 얻을 수있는 트랙의 목록이고 이미지 "play \ pause"는 각 객체마다 동일해야하며 사용자가 클릭하면 선택한 객체에 대해 "일시 중지"할 이미지가 필요합니다. VM 엔터티에 이미지가 있어야합니까? 어떻게 그 말을하는거야? 이 경우 –

답변

0
<phone:LongListSelector x:Name="MainLongListSelector" DataContext="{Binding listData}" IsGroupingEnabled="False" SelectionChanged="MainLongListSelector_SelectionChanged_1"> 
      <phone:LongListSelector.ItemTemplate> 
       <DataTemplate> 
        <StackPanel Orientation="Horizontal"> 
         <Image Name="PlayPause" Source="{Binding ImgUrl}" Height="100" Stretch="Fill"/> 
         <StackPanel> 
          <TextBlock Text="{Binding ImgText}" TextWrapping="Wrap" Style="{StaticResource PhoneTextExtraLargeStyle}"/> 
         </StackPanel> 
        </StackPanel> 
       </DataTemplate> 
      </phone:LongListSelector.ItemTemplate> 
     </phone:LongListSelector> 

:

ObservableCollection<LongListData> listData = new ObservableCollection<LongListData>(); 

    listData.Add(new LongListData() { ImgText = "Image1", ImgUrl = new Uri("Images/1.jpg", UriKind.Relative) }); 
    listData.Add(new LongListData() { ImgText = "Image2", ImgUrl = new Uri("Images/2.jpg", UriKind.Relative) }); 
    listData.Add(new LongListData() { ImgText = "Image3", ImgUrl = new Uri("Images/3.jpg", UriKind.Relative) }); 
    listData.Add(new LongListData() { ImgText = "Image4", ImgUrl = new Uri("Images/4.jpg", UriKind.Relative) }); 

    MainLongListSelector.ItemsSource = listData; 

인 selectionchanged 방법에서

private void MainLongListSelector_SelectionChanged(object sender, SelectionChangedEventArgs e) 
    { 
     var res = (sender as LongListSelector).SelectedItem as LongListData; 
     int index = listData.IndexOf(res); 
     //mark 1 
     var newData = new LongListData() { ImgText = res.ImgText, ImgUrl = new Uri("Images/2.jpg", UriKind.Relative) }; 
     listData.RemoveAt(index); 
     listData.Insert(index, newData); 
    } 

는 C# 코드에서 정의

public class LongListData 
    { 
     public Uri ImgUrl { get; set; } 
     public string ImgText { get; set; } 
    } 
,

이미지를 무작위로 또는 코드의 'mark1'에서 필요에 따라 사용할 수 있습니다.

+0

어떻게 textblock에 텍스트를 설정합니까? –

+0

당신이하고 싶은 것을 정확히 말해 주시겠습니까? –

+0

첫 번째 메시지에 대한 내 의견보기 –