2016-09-12 3 views
0

재생 목록을 만들고 싶습니다.ListViewItem은 인덱스를 사용하여 텍스트 색상을 변경합니다.

하지만 사용자가 지정한 항목을 강조 표시하고 배경색이나 현재 재생되는 텍스트 항목의 색을 변경하는 데 문제가 있습니다.

속성 내가 보여주고 싶은 - 지금 재생이 무엇인지 (int IndexToPlay) 어떤 사용자 선택 (SelectedIndex)

는 사용자가 하나 개의 항목 만 내가 WPF, MVVM을 사용

를 선택해야하고, 내가 많이 읽어 게시물,하지만 불행히도 나는 해결책을 찾지 못했습니다. 당신이 당신의 ViewModel 클래스에 isSelected와 IsPlaying 속성이있는 경우

<ListView Name="List" 
    Grid.ColumnSpan="11" Margin="7,0,7,0.4" Grid.Row="9" 
    ItemsSource="{Binding MusicList, UpdateSourceTrigger=PropertyChanged}" 
    SelectedIndex="{Binding SelectedIndex}" 
    > 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}" /> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 

답변

0

:

public class MusicItem 
{ 
    private bool _isPlaying; 
    public bool IsPlaying 
    { 
     get 
     { 
      return _isPlaying; 
     } 
     set 
     { 
      _isPlaying = value; 
      OnPropertyChanged(); 
     } 
    } 

    private bool _isSelected; 
    public bool IsSelected 
    { 
     get { return _isSelected; } 
     set 
     { 
      _isSelected = value; 
      OnPropertyChanged(); 
     } 
    } 
} 

당신은에 isSelected 속성을 바인딩 할 ItemContainerStyle을 설정할 수 있습니다 다음은 DataTrigger에 함께 ItemTemplate을에 스타일을 사용할 수 있습니다 ItemTemplate의 모양을 변경하십시오.

<ListView Name="List" 
    ItemsSource="{Binding MusicList, UpdateSourceTrigger=PropertyChanged}" 
    SelectedIndex="{Binding SelectedIndex}"> 
    <ListView.ItemContainerStyle> 
     <Style TargetType="ListViewItem"> 
      <Setter Property="IsSelected" Value="{Binding Path=IsSelected, Mode=TwoWay}"/> 
     </Style> 
    </ListView.ItemContainerStyle> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <TextBlock Text="{Binding Name, UpdateSourceTrigger=PropertyChanged}"> 
       <TextBlock.Style> 
        <Style TargetType="TextBlock"> 
         <Style.Triggers> 
          <DataTrigger Binding="{Binding IsPlaying}" Value="True"> 
           <Setter Property="Foreground" Value="Red"/> 
          </DataTrigger> 
          <DataTrigger Binding="{Binding IsSelected}" Value="True"> 
           <Setter Property="Background" Value="Blue"/> 
          </DataTrigger> 
         </Style.Triggers> 
        </Style> 
       </TextBlock.Style> 
      </TextBlock> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
관련 문제