2017-04-25 16 views
-1

뷰 모델 부울 속성의 값에 따라 배경색을 변경하는 약 50 개의 레이블을 표시해야하는 요구 사항이 있습니다. . 각 레이블은 다른 뷰 모델 부울 특성과 연관됩니다. 이렇게하면 모든 레이블에 대해 스타일을 선언 할 필요가 없도록 모든 50 개의 레이블과 연결할 수있는 단일 스타일을 어떻게 만들 수 있습니까? 각각의 레이블이 다른 뷰 모델 부울 속성에 바인딩되기 때문에 모든 50 개의 레이블에 단일 스타일 및/또는 데이터 트리거를 적용 할 수있는 방법이 있습니까?보기 모델에 따라 배경색을 변경하는 50 개의 WPF 레이블에 대해 단일 스타일 또는 데이터 트리거를 만들 수 있습니까? 부울 값

+0

가능한 복제 http://stackoverflow.com/questions/3569974/wpf-global-style –

+0

가능한 복제본 [WPF - 글로벌 스타일?] (http://stackoverflow.com/questions/3569974/wpf-global- 스타일) –

+0

저는 글로벌 스타일이 어떻게 작동하는지 잘 알고 있습니다. 내 특별한 질문 : 각 레이블은 다른 뷰 모델 부울 속성에 바인딩되므로 모든 50 개의 레이블에 단일 스타일 또는 데이터 트리거를 적용 할 수있는 방법이 있습니까? – chuckp

답변

0

글로벌 스타일의 작동 방식을 잘 알고 있습니다. 내 특별한 질문 : 각 레이블은 다른 뷰 모델 부울 속성에 바인딩되므로 모든 50 개의 레이블에 단일 스타일 또는 데이터 트리거를 적용 할 수있는 방법이 있습니까?

아니요 프로그래밍 방식으로 만들지 않는 한 DataTrigger의 바인딩을 동적으로 변경할 수 없습니다.

DataTrigger의 바인딩 경로를 동적으로 바꾸고 나머지 스타일 또는 서식 파일을 XAML에서 재사용 할 방법이 없습니다.

+0

고마워요. 저는 50 가지 라벨에 다른 데이터 트리거를 적용하기 전에이 작업을 수행 할 수있는 방법이 없었는지 확인하고 싶었습니다. – chuckp

-1

레이블에 대한 사용자 지정 템플릿을 만들고 ControlTemplate 트리거를 추가하여 레이블 배경을 변경하려고 할 수 있다고 생각합니다. 코드 위

<Style x:Key="test" TargetType="Label"> 
 
      <Setter Property="BorderThickness" Value="1"></Setter> 
 
      <Setter Property="BorderBrush" Value="Black"></Setter> 
 
      <Setter Property="Template"> 
 
       <Setter.Value> 
 
        <ControlTemplate> 
 
         <TextBlock Text="test"></TextBlock> 
 
         <ControlTemplate.Triggers> 
 
          <DataTrigger Binding="{Binding ColorValue}" Value="12"> 
 
           <Setter Property="Background" Value="Aquamarine"></Setter> 
 
          </DataTrigger> 
 
         </ControlTemplate.Triggers> 
 
        </ControlTemplate> 
 
       </Setter.Value> 
 
      </Setter> 
 
     </Style>

은 정확한 답변을하지, 그냥 사용을 보여주는 것입니다.

+1

나는 모든 50 개의 레이블이 동일한 뷰 모델 부울 속성에 바인딩 된 경우이 방법이 효과가 있다고 생각합니다. 그러나 ... 각 레이블은 자체 부울 속성에 바인딩됩니다. – chuckp

+0

완전히 귀하의 요점에 동의하지만, 나는 각 viewmodel이 작동해야합니다 동일한 속성 이름을 가지고 있다고 생각하지만. 내가 그것을 시도하자. 우리가 속성을 가진 기본 viewmodel을 가질 수 있고 각 viewmodel이 해당 레이블에 대해 해당 속성을 사용하는지 확인하십시오. 너가 다르게 생각하면 나에게 알려줘. –