2011-09-09 5 views
1

나는 매우 간단한 클래스bools의 간단한 개체가 목록 상자에 바인딩하고 강조 "true"로 항목

public class SimpleClass // abreviated for this example 
{ 
    public bool HighAlert {get;set;} 
    public bool LowAlert {get;set;} 
    // about 10 other bools 
} 

그들은 모두 부울 prorties되어 있습니다. 또한 구조체를 사용하거나 배열을 사용하면 더 쉽게 사용할 수 있습니다.

나는 목록 상자에 데이터 바인딩하고 "true"인 항목을 파란색 또는 빨간색으로 강조하고 싶습니다. 물론 SimpleClass에서 인스턴스화 된 객체가 변경되면 목록 상자가 업데이트됩니다. 내 유일한 다른 요구 사항은 회원 이름 이외의 목록 상자에 무언가를 갖는 것입니다. 예를 들어 "LowAlert"보다는 "Low Bank Account Alert"를 사용하는 것이 좋습니다.

물론 누군가가 SimpleClass에 속성을 추가 할 때 피할 수없는 날이 더 많아 질수록 자동으로 (SimpleClass를 실제로 사용하는 목록 상자) 더 좋습니다.

예제 또는 자습서? 나는 이것이 매우 일반적인 시나리오라고 생각할 것이다. 당신이 질문

감사합니다,

데이브

답변

0

은 두 가지가 될 것으로 보인다.

1) 조건부 서식 지정. 다음과 같이 목록 상자에서 트리거를 사용할 수 있습니다.

<Style x:Key="ColoringStyle" TargetType="{x:Type ListBoxItem}"> 
     <Style.Triggers> 
      <DataTrigger Binding="{Binding Path=HighAlert}" Value="True"> 
       <Setter Property="Background" Value="#33FF0000"></Setter> 
      </DataTrigger> 
      <DataTrigger Binding="{Binding Path=LowAlert}" Value="True"> 
       <Setter Property="Background" Value="#33FFDD00"></Setter> 
      </DataTrigger> 

     </Style.Triggers> 
    </Style> 

2) ListBox 항목을 다르게 표시합니다. WPF에서, 당신은 ItemTemplate을 사용할 수 있습니다 :

모두 널리 사용되는
<ListBox.ItemTemplate> 
     <DataTemplate> 
     <StackPanel Orientation="Horizontal"> 
       --- Have your custom display in here ---- 
     </StackPanel> 
     </DataTemplate> 
    </ListBox.ItemTemplate> 

, pls는 어떤 구체적인 예는 구글, 당신은

+0

감사 anvarbek 요점을 가지고, 당신의 대답은 올바른 방향으로 절 지적 바랍니다. 이것들 다음을 위해, 나는 또한 나의 질문에 아주 관련 있던 위치를 사용했다 : http://www.dreamincode.net/forums/topic/219334-wpf-using-data-triggers/. "IsValid"속성에는 양방향 바인딩을 수행하는 경우 OnPropertyChanged ("IsValid")와 함께 설정자가 있어야합니다. – Dave

관련 문제