2013-03-30 1 views
0

우선 나쁜 영어로 사과드립니다.WPF - 바인드 된 XML로 listview에서 행 강조 표시

나는 각 행이 한 사람을 의미하는 listview에 바인딩되어 있습니다. xml의 ​​성 요소에 따라 행의 배경색을 파란색 또는 분홍색으로 지정합니다. 트리거를 사용하여 스타일을 만들었지 만 첫 번째 XML 노드 만 확인하고 모든 행은 첫 번째 행과 동일하게 표시됩니다. Xml 요소의 성별은 남성의 경우 0, 여성의 경우 1입니다.

하나 DataTrigger (제 비슷)

<DataTrigger Binding="{Binding Source={StaticResource Data}, XPath=People/Person/Sex}" Value="0"> 
    <Setter Property="Background" Value="{StaticResource MaleBrush}" /> 
</DataTrigger> 

이 (데이터 XmlDataProvider 임)리스트 뷰에 결합 XML 스타일이다

<ListView ... ItemsSource="{Binding Source={StaticResource Data}, XPath=People/Person}" ItemContainerStyle="{StaticResource SexStyle}"> 

그리고이 스타일 헤더이다

<Style x:Key="SexStyle" TargetType="{x:Type ListViewItem}"> 

도움 주셔서 감사합니다!

답변

0

이 경우 ValueConverter를 사용해야합니다.

데이터 형식의 배경을 성별에 바인딩합니다. 그런 다음 당신은 다음과 같은 값 변환기 클래스를 생성 :

public sealed class GenderToBackgroundConverter : IValueConverter 
    { 

    public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     if (value is string) { 
      if (Convert.ToString(value) == "m") { 
       return Colors.Blue; 
      } else { 
       return Colors.Pink; 
      } 
     } 
    } 

    public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture) 
    { 
     throw new NotImplementedException(); 
    } 
} 

는 다음과 같이 자원에 추가이 값 변환 :

<local:GenderToBackgroundConverter x:Key="GenderToBackgroundConverter" /> 

을 그리고 당신의 DataTemplate에 :

<Stackpanel Background={Binding Sex, Converter={StaticResource GenderToBackgroundConverter}}"> 

</Stackpanel>